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(")
");
51 printf(" %d = number of digits in repeating cycle
",!n?1:len-b[n]);
52 }
53 return 0;
54 }
看网上的大佬的,题不难,格式挺废的,每一次输出后都得有一个空行。