在一开始接触到这一题的时候,和大多数人一样,一脸蒙蔽;这种要涉及到数字计算的题目如果没有一定的经验,一般都是无从下手的。
我去baidu了一下,看到了一句话,秒懂。
大家可以自己去拿两个除不尽的数去列一下竖式,就会发现,每一次除以除数的都是除剩下的余数,然后乘以10,再一次除以除数,也就是说如果哪一次余数相同了,那后面的书必然和前面的数构成一个循环。
下面是我自己写的C语言代码(觉得C语言简洁易懂,就没用C++)
#include<stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);//读入两个要除掉数
int x=a%b;//x是余数;
x=(x*10)%b;//这里是循环开始的余数:
int temp=x;
int n=1;//n是循环的最小长度;
int res[1000]={0};//这个是要输出的循环的小数部分;
res[0]=(temp*10)/b;
while((x*10)%b!=temp)
{
res[n++]=(x*10)/b;
x=(x*10)%b;
}
printf("%d\n",n);
int i;
printf("%d.(",a/b);
for(i=0;i<n;i++)
printf("%d",res[i]);
printf(")");
return 0;
}
这是运行结果,和给出的实例相符。