uva 202 Repeating Decimals
2016-04-09 21:19
393 查看
#include<iostream> #include<cstdio> #include<cstring> using namespace std; char change(int k) { return k+'0'; } int main() { int a,b; int m,n; while(scanf("%d%d",&a,&b)!=EOF) { m=a,n=b; int y[10000]; int x=0; int cnt=0; string s; if(a>b) {y[x++]=a%b;a=a%b;} else{ while(1) { if(cnt) { s=s+change(a/b); y[x++]=a%b; } if(a>b) break; a=a*10; cnt++; } a=a%b; } int count=0; int flag=0; while(1) { s=s+change((a*10)/b); y[x]=(a*10)%b; a=(a*10)%b; for(int i=0;i<x-1;i++) { if(y[i]==y[x-1]&&x>1&&s[i]==s[x-2]&&m>n) {flag=i;count++;break;} if(y[i]==y[x-1]&&s[i]==s[x-1]) {flag=i;count++;break;} } if(count) break; x++; } cout<<m<<"/"<<n<<" "<<"="<<" "; cout<<m/n<<"."; for(int i=0;i<x-1;i++) { if(i==50) break; if(i==flag&&flag==x-2&&(s[i]>='0'&&s[i]<='9')) cout<<"("<<s[i]<<")"; else if(i==flag&&(s[i]>='0'&&s[i]<='9')) cout<<"("<<s[i]; else if(i==x-2&&(s[i]>='0'&&s[i]<='9')) cout<<s[i]<<")"; else if((s[i]>='0'&&s[i]<='9')) cout<<s[i]; } if(x>50) cout<<"...)"; cout<<endl; cout<<" "; cout<<x-1-flag; cout<<" "<<"="<<" number of digits in repeating cycle"<<endl<<endl;; } return 0; }
相关文章推荐
- uva 10340 All in All
- 关于apache上的CGI文件问题总结--为什么无法找到cgi文件、为什么找到了cgi文件却不执行反而询问是否下载或直接显示文件代码
- java中的回调函数理解
- linux下查找某个文件位置的方法
- Android MotionEvent 和 TouchSlop
- 2016.04.09 使用Powerdesigner进行创建数据库的概念模型并转为物理模型
- win10安装提示组件存储损坏的解决探讨(附DISM命令的简单使用)
- c语言编写求解数独
- 【剑指 offer】(二十二)—— 栈的压入、弹出序列
- 古老编程环境展——LFS Linux篇
- 三言两语说shader(七)黑幕扩散
- 解决android EditText自动获取焦点的问题
- uva 1587 Box
- HDU 4715 Difference Between Primes (筛法求素数)
- xshell利用linux rz sz 命令上传、下载文件
- java基础知识
- 京东2016春招(实习)笔试+编程题
- JSP九大内置对象详解(一)
- 青蛙的约会(扩展gcd)
- uva 1588 Kickdown