UVa202-Repeating Decimals

xiaoxiao2021-02-28  138

UVa202-Repeating Decimals

思路:

刚开始这个题目无从下手,后来看了别人的思路后恍然大悟,模拟手工运算除法,把每次取余的数存下来,如果这个数第二次出现那就是开始循环了,这个思路有了以后就是细心的问题了。

代码:

#include <bits/stdc++.h> using namespace std; int main() { int a,b,num[3005],i,j; while(cin>>a>>b) { int mp[30005]={0}; printf("%d/%d = %d.",a,b,a/b); a=a%b*10; for(i=1; !mp[a]; i++) { mp[a]=i; num[i]=a/b; a=a%b*10; } for(j=1; j<i; j++) { if(j==mp[a]) printf("("); if(j==51) { printf("..."); break; } printf("%d",num[j]); } printf(")\n"); printf(" %d = number of digits in repeating cycle\n\n",i-mp[a]); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-66377.html

最新回复(0)