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 }
看网上的大佬的,题不难,格式挺废的,每一次输出后都得有一个空行。