#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<climits>
#include<cmath>
#define OK 1
#define ERROR 0
#define MAXSIZE 100
using namespace std;
int main()
{
int n,m;
int a[],b[],c[];
while(cin>>n>>m)
{
int len=,temp=n;
memset(a,,sizeof(a));
memset(b,,sizeof(b));
a[len++]=n/m;
n=n%m;
while(!b[n]&&n)
{
b[n]=len;//b纪录是否循环 当n和之前的某个n相等时说明从n开始循环
c[len]=n;//c纪录余数
a[len++]=n*/m;//a纪录小数,以便输出
n=n*%m;//求余
}
printf("%d/%d = %d.",temp,m,a[]);
for(int i=; i<len; i++)
{
if(c[i]==n)
printf("(");
if(i==)
{
printf("...");
break;
}
printf("%d",a[i]);
}
if(n==)
{
printf("(0");
}
printf(")\n");
printf(" %d = number of digits in repeating cycle\n\n",!n?:len-b[n]);
}
return ;
}
看网上的大佬的,题不难,格式挺废的,每一次输出后都得有一个空行。