博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1930 Dead Fraction 循环小数的处理
阅读量:4113 次
发布时间:2019-05-25

本文共 1251 字,大约阅读时间需要 4 分钟。

题意:给你0.abcdef...形式无限循环小数,abcdef为0到9的整数,不知道循环节是多少,求
所有可能的分数中分母最小的;
资料:循环小数的处理:
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std; #define MM(a) memset(a,0,sizeof(a)) typedef long long ll; typedef unsigned long long ULL; const int mod = 1000000007; const double eps = 1e-10; const int inf = 0x3f3f3f3f; long long gcd(long long a, long long b) { if (b == 0) return a; else return gcd(b, a%b); } long long pow_2(long long a, long long b) { long long temp = b, res = 1,p=a; while (temp) { if (temp & 1) res *= p; p = p*p; temp >>= 1; } return res; }//其实可以不需要快速幂,,直接对10进行累乘就好 int main() { char s[1000]; while (~scanf("%s", s)) { if (s[1] != '.') return 0; long long all = 0, i, num = 0, n, ansc,ansz=inf,ansm=inf, temp; for (i = 2; s[i] != '.'; i++); n = i - 2; for (int j = 2; j <= i - 1; j++) all = all * 10 + s[j] - '0'; for (int k = 1; k <= n; k++) { num = all / (pow_2(10,k)); long long fenmu = pow_2(10, n) - pow_2(10, n - k); long long fenzi = all - num; long long c = gcd(fenzi, fenmu); if (fenmu / c < ansm) { ansz = fenzi / c; ansm = fenmu / c; } } printf("%lld/%lld\n",ansz, ansm ); } return 0; }

转载地址:http://tvgsi.baihongyu.com/

你可能感兴趣的文章
【Python】学习笔记——-7.5、实例属性和类属性
查看>>
Linux设备模型(总线、设备、驱动程序和类)之四:class_register
查看>>
git中文安装教程
查看>>
虚拟机 CentOS7/RedHat7/OracleLinux7 配置静态IP地址 Ping 物理机和互联网
查看>>
弱类型、强类型、动态类型、静态类型语言的区别是什么?
查看>>
Struts2技术内幕图书 转载
查看>>
Java异常分类
查看>>
项目中的jackson与json-lib使用比较
查看>>
Jackson Tree Model Example
查看>>
j2ee-验证码
查看>>
日志框架logj的使用
查看>>
js-高德地图规划路线
查看>>
常用js收集
查看>>
mydata97的日期控件
查看>>
如何防止sql注入
查看>>
maven多工程构建与打包
查看>>
springmvc传值
查看>>
Java 集合学习一 HashSet
查看>>
在Eclipse中查看Android源码
查看>>
Android-Socket登录实例
查看>>