章三习题8——UVA 202 Repearing Decimals
2017-02-27 00:43
351 查看
题意:
这个题是来找循环节。
因为每一个分数肯定是一个无限循环的小数
输出这个小数,然后循环节要用()括起来,并显示出循环节的长度
若除数相同,被除数相同,则之后的商和余数肯定是相同的。所以我们需要找除数相同的,,除数为 余数*10,
这个题是来找循环节。
因为每一个分数肯定是一个无限循环的小数
输出这个小数,然后循环节要用()括起来,并显示出循环节的长度
若除数相同,被除数相同,则之后的商和余数肯定是相同的。所以我们需要找除数相同的,,除数为 余数*10,
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; #define maxn 3005 int dis[maxn]; int ans[maxn]; int w[maxn]; int main() { int a,b; while(scanf("%d %d",&a,&b)!=EOF) { memset(dis,0,sizeof(dis)); int n=a/b; int h=0; ans[h++]=n; int m=a%b; int count1=1; while(!dis[m]&&m) { dis[m]=count1; w[count1++]=m; n=(m*10)/b; m=m*10%b; ans[h++]=n; } printf("%d/%d = %d.",a,b,ans[0]); for(int i=1;i<count1&&i<=50;i++) { if(n&&w[i]==m) printf("("); printf("%d",ans[i]); } if(h>50) printf("..."); if(m==0) printf("(0)\n"); else printf(")\n"); if(m==0) count1=1; else count1-=dis[m]; printf("%d = number of digits in repeating cycle\n",count1); } return 0; }
相关文章推荐
- 章三习题8——UVA 202 Repearing Decimals
- 章三习题8——UVA 202 Repearing Decimals
- 章三习题8——UVA 202 Repearing Decimals
- 章三习题8——UVA 202 Repearing Decimals
- 章三习题8——UVA 202 Repearing Decimals
- 章三习题8——UVA 202 Repearing Decimals
- 章三习题8——UVA 202 Repearing Decimals
- 章三习题1——UVA 1585
- 章三习题4——UVA 455
- 习题 3-8 循环小数 Repeating Decimals UVa 202
- 章三习题4——UVA 455
- 【习题 3-8 UVA - 202】Repeating Decimals
- 算法竞赛入门经典(第2版)习题3-8 循环小数 Repeating Decimals UVa202
- 章三习题4——UVA 455
- 章三习题4——UVA 455
- 章三习题4——UVA 455
- 章三习题4——UVA 455
- 章三习题4——UVA 455
- 算典03_习题_08_UVA-202
- 章三习题4——UVA 455