UVa 202 Repeating Decimals 循环节
来源:互联网 发布:子域名是否需要备案 编辑:程序博客网 时间:2024/06/16 13:25
题目链接:https://odzkskevi.qnssl.com/249e6049be24dee57a1c3b28ebf8f12d?v=1510665795
这个题题意:输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。例
如a=5,b=43,小数表示为0.(116279069767441860465),循环节长度为21。
就是求循环节,模拟一下
这里有一个优化,如果后面某一位余数和前面某一位余数相同,那么就构成循环了,仔细想想,就是那么回事哈
如果不理解,建议先别看输出,在纸上画画那个除法的竖式
My ugly code
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>using namespace std;const int maxn=3000+30;int n,m;int vis[maxn],r[maxn],bb[maxn];int cas=1;int main(){ while(~scanf("%d%d",&n,&m)&&m){ printf("%d/%d = %d.",n,m,n/m); int cnt=0; r[cnt++]=n/m; n=n%m;//n代表余数 memset(vis,0,sizeof(vis)); memset(bb,0,sizeof(bb)); bb[0]=n; while(!vis[n] && n > 0){ vis[n]=1; bb[cnt]=n; r[cnt++]=(n*10)/m; n=(n*10)%m; } int jian=0; for(int i=1;i<cnt && i<=50;i++){ if(bb[i] == n){ printf("("); jian=i; } printf("%d",r[i]); } if(n==0){ cnt=1; printf("(0"); } if(cnt > 50) printf("..."); printf(")\n"); printf(" %d = number of digits in repeating cycle\n",cnt-jian); printf("\n"); } return 0;}
阅读全文
1 0
- UVA 202 - Repeating Decimals【循环小数循环节】
- UVa 202 Repeating Decimals 循环节
- UVA 202 - Repeating Decimals(循环小数循环节)
- UVa 202 - Repeating Decimals
- UVa 202 - Repeating Decimals
- UVa 202 - Repeating Decimals
- UVa 202 Repeating Decimals
- Uva 202 Repeating Decimals
- UVA - 202 Repeating Decimals
- UVa 202 Repeating Decimals
- UVa-202 - Repeating Decimals
- UVa 202 Repeating Decimals
- UVa 202 Repeating Decimals
- UVA - 202 Repeating Decimals
- Uva - 202 - Repeating Decimals
- UVA - 202 Repeating Decimals
- [UVA 202]Repeating Decimals
- UVa 202 Repeating Decimals
- 《21天实战caffe》 读书笔记(六)
- 虚函数
- vue组件
- HDU 1241 Oil Deposits【深搜练习】
- 文章标题
- UVa 202 Repeating Decimals 循环节
- 关于位运算(转需)
- 工具类注入Service
- 微信二次分享解决方案
- 做乘法
- JVM调优总结 -Xms -Xmx -Xmn -Xss
- Python基础之语句(条件、循环)
- Design Compiler基础知识整理
- 面向对面