UVa202
来源:互联网 发布:近视蓝光眼镜 知乎 编辑:程序博客网 时间:2024/05/16 19:33
写的比较暴力,把余数乘10的存储和余数的存储分开了,导致逻辑有些混乱而不得不考虑多种特殊情况(这样写主要是循环节以0开始比较麻烦,如50/99等)
另外注意输出小数位后50而不是循环节的前50位。
#include<stdio.h>#include<string.h>#define INFINITE 3005const char*msg="number of digits in repeating cycle";int cr[INFINITE];int cq[INFINITE];int main(){int m,n;s:while(scanf("%d%d",&m,&n)==2&&n){memset(cr,0,sizeof(cr)); memset(cq,0,sizeof(cq));int q=m/n,r=m%n,count=1;printf("%d/%d = %d.",m,n,q);m=r;cr[r]=1;while(r){m*=10;while(m<n) { cq[count++]=0; if(cr[m]){if(cr[m]){for(int i=1;i<=cr[m]-1;i++) printf("%d",cq[i]);printf("(");for(int i=cr[m];i<count;i++){ if(i==51){ printf("..."); break; } else printf("%d",cq[i]); }printf(")\n %d = %s\n\n",count-cr[m],msg); goto s;}}else cr[m]=count;m*=10; }q=m/n; r=m%n; cq[count++]=q;if(cr[r]){for(int i=1;i<=cr[r]-1;i++) printf("%d",cq[i]);printf("(");for(int i=cr[r];i<count;i++){ if(i==51){ printf("..."); break; } else printf("%d",cq[i]); }printf(")\n %d = %s\n\n",count-cr[r],msg); goto s;}else{ cr[r]=count; m=r;}}for(int i=1;i<count;i++){ if(i==51){ printf("..."); break; } else printf("%d",cq[i]); }printf("(0)\n 1 = %s\n\n",msg);}return 0;}
0 0
- UVA202
- uva202
- Uva202
- UVa202
- UVa202
- UVa202
- UVa202
- Uva202
- 循环小数 UVa202
- 循环小数 uva202
- uva202 循环小数
- Uva202 - Repeating Decimals
- UVA202- Repeating Decimals
- uva202循环小数Repeating Decimals
- [UVA202]Repeating Decimals
- UVA202 UVALive5141 Repeating Decimals
- UVa202 Repeating Decimals
- UVa202-Repeating Decimals
- leetcode 14. Longest Common Prefix
- soledede-极大似然估计
- 3D扫描仪: 快速获得3D模型数据
- Xcode 支持 C11设置
- HOJ 2226&POJ2688 Cleaning Robot(BFS+TSP(状态压缩DP))
- UVa202
- 基于http live streaming, 使用vlc + mediastreamsegmenter + apache 实现iOS视频直播
- OC各种数据类型之间的转换方法
- Java 简单高效处理字符串-删除所有标点
- Linux 内核中断内幕
- Java多线程
- Android---Volley请求天气接口JSON解析
- 验证手机号码
- 放大你的格局(深度好文)