2.4Fractions to Decimals

开始看这个题目的时候一点思路都没有,毕竟double型才能保留16位的小数。后面看了别人的思路才发现我们应该模拟小数除法的过程;在模拟的过程中如果某一次取得的余数,已经在前面出现过了那么就会在这里形成循环节;这个题目还有一点比较坑的就是输出格式,我就在这上面WA了好几发。

代码如下:

/*ID:15674811LANG:C++PROG:fracdecusing namespace std;#define maxn 110000int vis[maxn],ans[maxn],cnt;int main(){freopen(“fracdec.in”,”r”,stdin);freopen(“fracdec.out”,”w”,stdout);//freopen(“lkl.txt”,”r”,stdin);//freopen(“a.txt”,”w”,stdout);int n,m;while(scanf(“%d%d”,&n,&m)!=EOF){cnt=0;int d=1;memset(vis,0,sizeof(vis));printf(“%d.”,n/m);int t=n/m;if(t==0)d=2;while(t){d++;t/=10;}n=n%m; vis[n]=1;while(true){n=n*10;int t=n/m;n=n%m;ans[cnt++]=t;if(n==0){for(int i=0;i<cnt;i++){printf(“%d”,ans[i]);d++;if(d%76==0)printf(“\n”);}printf(“\n”);break;}if(vis[n]){int flag=0;for(int i=0;i<cnt;i++){if(ans[i]==n*10/m&&!flag){printf(“(“);d++;flag=1;if(d%76==0)printf(“\n”);}printf(“%d”,ans[i]);d++;if(d%76==0)printf(“\n”);}printf(“)\n”);break;}vis[n]=1;}} return 0;}

,人生谁无少年时,甜苦酸辛各自知。

2.4Fractions to Decimals

相关文章:

你感兴趣的文章:

标签云: