嗯...用到一个定理,对于一个最简分数n/d,d=(2^x)*(5^y)*m,m≠1,那么其循环节长度为使10^L mod m==1的最小的L,不循环长度为max(x,y)

然后这题就没什么了。。

76个字符一换行比较坑,我用了stringstream...

 1 #include<iostream>
 2 #include<sstream>
 3 #include<cstdio>
 4 #include<iomanip>
 5 #include<algorithm>
 6 #include<string>
 7 using namespace std;
 8 typedef long long LL;
 9 string s;
10 int pow_mod(int a,int b,int mod)
11 {
12     LL base=a,ans=1;
13     while(b)
14     {
15         if(b&1) ans=ans*base%mod;
16         base=base*base%mod;
17         b>>=1;
18     }
19     return (int)ans;
20 }
21 int gcd(int a,int b)
22 {
23     return b==0?a:gcd(b,a%b);
24 }
25 int x,y,m,n,d;    // n/d d=2^x * 5^y * m
26 int main()
27 {
28     freopen("fracdec.in","r",stdin);
29     freopen("fracdec.out","w",stdout);
30     stringstream ss;
31     cin>>n>>d;
32     int g=gcd(n,d);
33     n/=g;d/=g;
34     m=d;
35     while(m>1 && (m&1)==0) m>>=1,++x;
36     while(m>1 && (m%5)==0) m/=5,++y;
37     if(m==1)
38     {
39         if(n%d==0) ss<<n/d<<".0";
40         else ss<<setprecision(max(x,y))<<setiosflags(ios::fixed)<<(double)n/(double)d;
41     }
42     else
43     {
44         int i;
45         for(i=1;;++i) if(pow_mod(10,i,m)==1) break;
46         //printf("%d\n",i);
47         ss<<n/d<<'.';
48         n%=d;
49         for(int j=0;j<max(x,y)+i;++j)
50         {
51             if(j==max(x,y)) ss<<'(';
52             n*=10;
53             ss<<n/d;
54             n%=d;
55         }
56         ss<<')';
57     }
58     ss>>s;
59     int sz=s.length();
60     for(int i=0;i<sz;++i)
61     {
62         if(i%76==0 && i!=0) putchar(10);
63         putchar(s[i]);
64     }
65     putchar(10);
66     return 0;
67 }

View Code

转载于:https://www.cnblogs.com/lowsfish/p/4299410.html

USACO training 2.4.5 Fractions to Decimals题解相关推荐

  1. usaco ★Fractions to Decimals 分数化小数

    ★Fractions to Decimals 分数化小数 写一个程序,输入一个形如 N/D 的分数(N 是分子,D 是分母),输出它的小数形式. 如果小数有循环节的话,把循环节放在一对圆括号中.例如, ...

  2. 【USACO training】Chapter 1 入门

    整理的算法模板合集: ACM模板 目录 Section 1.1 介绍 Section 1.2 提交解决方案,任务类型,特殊问题 1.2.1 AcWing 1339. 你的旅途由此开始(字符串模拟) 1 ...

  3. USACO Training Section 1.2 双重回文数 Dual Palindrom

    题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做"回文数".例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就 ...

  4. USACO Training Section 1.1 坏掉的项链Broken Necklace

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  5. USACO Training Section 1.1 贪婪的送礼者Greedy Gift Givers

    P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers 题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一 ...

  6. USACO Training Section 1.1 Your Ride Is Here

    题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者.因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走 ...

  7. 1439: 2.4.5 Fractions to Decimals 分数化小数

    1439: 2.4.5 Fractions to Decimals 分数化小数 时间限制: 1 Sec  内存限制: 64 MB 提交: 194  解决: 13 题目描述 写一个程序,输入一个形如N/ ...

  8. USACO 2.1.3 Ordered Fractions

    USACO 2.1.3 Ordered Fractions                                           MPS 输入一个自然数N 请写一个程序来增序输出分母小于 ...

  9. USACO Training 综述

    USACO Training 综述 http://train.usaco.org/usacogate(USACO 97道题) USA Computing Olympiad 是美国高校的信息学测评网站, ...

最新文章

  1. python怎么编程乘法口诀表_用python编写乘法口诀表的方法
  2. end to end testing
  3. c 语言编译器 论文,毕业论文--C语言编译器设计与实现.doc
  4. 【报告分享】我国数字基础设施建设现状及推荐措施研究报告.pdf(附下载链接)...
  5. [android] 百度地图开发 (两).所在地的城市定位和城市POI搜索
  6. java--jdk安装教程
  7. [HDOJ5734]Acperience(数学,公式推导)
  8. 编译原理第三版名词解释和简单
  9. java计算机毕业设计跨境电商网站源码+系统+数据库+lw文档+mybatis+运行部署
  10. 【历史上的今天】7 月 3 日:人体工程学标准法案;消费电子领域先驱诞生;育碧发布 Uplay
  11. 伍斯特理工学院计算机科学硕士,2020年伍斯特理工学院排名TFE Times美国最佳计算机科学硕士专业排名第100...
  12. Ubuntu CURL下载报错:curl: (77) error setting certificate verify locations:
  13. 物料-贴片电容-标签识别
  14. 淘宝首页链接跳转,非taobao.com域名下的链接处理
  15. uniapp前端向后端发送请求时,出现跨域问题的解决方法与原理
  16. web网页设计期末课程大作业:水果网站设计——HTML+CSS+JavaScript水果超市(带论文)
  17. 3、Kubernetes的基本使用
  18. [Practical.Vim(2012.9)].Drew.Neil.Tip04 学习摘要
  19. 【笔记】AASTeX模板使用
  20. 决策树算法分析天气、周末和促销活动对销量的影响

热门文章

  1. raptor算法流程图例题_RAPTOR流程图+算法程序设计教程
  2. python处理xml文件_Python解析并修改XML文件
  3. 数据结构栈和队列以及常见算法题
  4. 螺丝上的十字磨没了_淘钉钉-螺丝刀还有这种形状,你了解吗?
  5. c++监听键盘_想知道木马程序的键盘记录原理吗?python告诉你 !
  6. 三相pmsm矢量控制仿真模型_学术简报|永磁同步电机无速度传感器控制离散化方法研究...
  7. JAVA复习(date)
  8. 最大功率点跟踪测试软件,最大功率点跟踪
  9. 条令考试小程序辅助器_应知应会条令纲要学习微课堂(六)
  10. php 数组元素分类,数组分类、定义及遍历