USACO training 2.4.5 Fractions to Decimals题解
嗯...用到一个定理,对于一个最简分数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题解相关推荐
- usaco ★Fractions to Decimals 分数化小数
★Fractions to Decimals 分数化小数 写一个程序,输入一个形如 N/D 的分数(N 是分子,D 是分母),输出它的小数形式. 如果小数有循环节的话,把循环节放在一对圆括号中.例如, ...
- 【USACO training】Chapter 1 入门
整理的算法模板合集: ACM模板 目录 Section 1.1 介绍 Section 1.2 提交解决方案,任务类型,特殊问题 1.2.1 AcWing 1339. 你的旅途由此开始(字符串模拟) 1 ...
- USACO Training Section 1.2 双重回文数 Dual Palindrom
题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做"回文数".例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就 ...
- USACO Training Section 1.1 坏掉的项链Broken Necklace
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
- USACO Training Section 1.1 贪婪的送礼者Greedy Gift Givers
P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers 题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一 ...
- USACO Training Section 1.1 Your Ride Is Here
题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者.因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走 ...
- 1439: 2.4.5 Fractions to Decimals 分数化小数
1439: 2.4.5 Fractions to Decimals 分数化小数 时间限制: 1 Sec 内存限制: 64 MB 提交: 194 解决: 13 题目描述 写一个程序,输入一个形如N/ ...
- USACO 2.1.3 Ordered Fractions
USACO 2.1.3 Ordered Fractions MPS 输入一个自然数N 请写一个程序来增序输出分母小于 ...
- USACO Training 综述
USACO Training 综述 http://train.usaco.org/usacogate(USACO 97道题) USA Computing Olympiad 是美国高校的信息学测评网站, ...
最新文章
- python怎么编程乘法口诀表_用python编写乘法口诀表的方法
- end to end testing
- c 语言编译器 论文,毕业论文--C语言编译器设计与实现.doc
- 【报告分享】我国数字基础设施建设现状及推荐措施研究报告.pdf(附下载链接)...
- [android] 百度地图开发 (两).所在地的城市定位和城市POI搜索
- java--jdk安装教程
- [HDOJ5734]Acperience(数学,公式推导)
- 编译原理第三版名词解释和简单
- java计算机毕业设计跨境电商网站源码+系统+数据库+lw文档+mybatis+运行部署
- 【历史上的今天】7 月 3 日:人体工程学标准法案;消费电子领域先驱诞生;育碧发布 Uplay
- 伍斯特理工学院计算机科学硕士,2020年伍斯特理工学院排名TFE Times美国最佳计算机科学硕士专业排名第100...
- Ubuntu CURL下载报错:curl: (77) error setting certificate verify locations:
- 物料-贴片电容-标签识别
- 淘宝首页链接跳转,非taobao.com域名下的链接处理
- uniapp前端向后端发送请求时,出现跨域问题的解决方法与原理
- web网页设计期末课程大作业:水果网站设计——HTML+CSS+JavaScript水果超市(带论文)
- 3、Kubernetes的基本使用
- [Practical.Vim(2012.9)].Drew.Neil.Tip04 学习摘要
- 【笔记】AASTeX模板使用
- 决策树算法分析天气、周末和促销活动对销量的影响
热门文章
- raptor算法流程图例题_RAPTOR流程图+算法程序设计教程
- python处理xml文件_Python解析并修改XML文件
- 数据结构栈和队列以及常见算法题
- 螺丝上的十字磨没了_淘钉钉-螺丝刀还有这种形状,你了解吗?
- c++监听键盘_想知道木马程序的键盘记录原理吗?python告诉你 !
- 三相pmsm矢量控制仿真模型_学术简报|永磁同步电机无速度传感器控制离散化方法研究...
- JAVA复习(date)
- 最大功率点跟踪测试软件,最大功率点跟踪
- 条令考试小程序辅助器_应知应会条令纲要学习微课堂(六)
- php 数组元素分类,数组分类、定义及遍历