uva 202

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cstdlib>
 6 #include<climits>
 7 #include<cmath>
 8 
 9 #define OK 1
10 #define ERROR 0
11 #define MAXSIZE 100
12 
13 using namespace std;
14 
15 int main()
16 {
17     int n,m;
18     int a[4000],b[4000],c[4000];
20     while(cin>>n>>m)
21     {
22         int len=0,temp=n;
23         memset(a,0,sizeof(a));
24         memset(b,0,sizeof(b));
25         a[len++]=n/m;
26         n=n%m;
27         while(!b[n]&&n)
28         {
29             b[n]=len;//b纪录是否循环  当n和之前的某个n相等时说明从n开始循环
30             c[len]=n;//c纪录余数
31             a[len++]=n*10/m;//a纪录小数,以便输出
32             n=n*10%m;//求余
33         }
34         printf("%d/%d = %d.",temp,m,a[0]);
35         for(int i=1; i<len; i++)
36         {
37             if(c[i]==n)
38                 printf("(");
39             if(i==51)
40             {
41                 printf("...");
42                 break;
43             }
44             printf("%d",a[i]);
45         }
46         if(n==0)
47         {
48             printf("(0");
49         }
50         printf(")\n");
51         printf("   %d = number of digits in repeating cycle\n\n",!n?1:len-b[n]);
52     }
53     return 0;
54 }
看网上的大佬的,题不难,格式挺废的,每一次输出后都得有一个空行。

 

posted @ 2019-04-25 20:27  hbhdhd  阅读(120)  评论(0编辑  收藏  举报