ACM--Expanding Fractions
来源:互联网 发布:手机淘宝扫一扫 编辑:程序博客网 时间:2024/04/30 07:36
简略描述:求循环小数的循环节
Sample Input
3 7345 800112 99053 1220 0
Sample Output
.428571The last 6 digits repeat forever..43125This expansion terminates..113The last 2 digits repeat forever..4344262295081967213114754098360655737704918032786885245901639The last 60 digits repeat forever.
//基本思想就是每除一次,看新的余数是否与前面的相等//如112/990 余数分别为112 130 310 130,可知130与前面的相等了 //故可知从此开始循环 // 此题的陷阱为,50个就空一行。然而,第一个行的"."号不算,也就是 //第一行输出49个,接下来每行50个。 #include<iostream>#include<string.h>using namespace std;int s[1001];//储存商 int y[1001];//储存余数 int main(){int a,b;//a分子,b分母 int i,j;//i余数的指针 int k;while(cin>>a>>b,a&&b){ i=2; j=1; memset(s,0,sizeof(s)); memset(y,0,sizeof(y)); int flag=0; y[1]=a; while(a) { int exit=0; a*=10; s[j]=a/b; a=a%b; y[i]=a;if(!a){ flag=1;break;}for(k=1;k<=i-1;k++) if(y[k]==y[i]) { exit=1; break; } if(exit) break; i++; j++; } cout<<"."; if(flag) { for(int m=1;m<=j;m++) cout<<s[m]; cout<<endl; cout<<"This expansion terminates."<<endl;} else { for(int m=1;m<=i-1;m++) { if(m==50||m > 51&&m%50==0)//被这条代码坑成狗啊!!! cout<<endl; cout<<s[m]; } cout<<endl; cout<<"The last "<<i-1-k+1<<" digits repeat forever."<<endl; }}return 0;}
0 0
- ACM--Expanding Fractions
- ACM pku 1140 解题报告(Expanding Fractions )
- UVa 275 - Expanding Fractions
- uva 275 Expanding Fractions
- POJ 1140 Expanding Fractions 笔记
- 基础题 HOJ 1140 Expanding Fractions
- poj 1140 Expanding Fractions 除法模拟
- Octal Fractions c++ ACM
- acm pku 1131 Octal Fractions
- 杭电acm—1376 Octal Fractions
- 分数拆分( Fractions Again, UVA 10976)-ACM
- Expanding Rods
- Expanding Rods
- Expanding Rods
- ACM/ICPC中国·哈尔滨工程大学第八届程序设计竞赛 1006 Find Fractions
- Ordered Fractions
- Ordered Fractions
- Ordered Fractions
- 文章标题
- 线程池的简单实现
- Single Number II
- 在Android项目中(百度地图),报错:key验证出错,请在AndroidManifest.xml文件中检查key设置
- 牛腩新闻发布系统(4)——可变宽度的圆角框制作
- ACM--Expanding Fractions
- STL容器的适用情况
- 执行qmake的时候发生错误
- 线段树——HDOJ 1166 敌兵布阵 解题报告
- Apache Spark入门攻略
- 单例设计模式
- 经典makefile例子
- Android WebView的简单使用
- 第一次电话面试感想