#include <stdio.h>
int main()
{
int p,q;
while (scanf("%d%d",&p,&q)!=EOF)
{
int a[1000]={0},res=p,i=0,j;
//将p送往a,并计算p的位数为j
for(j=0;res;a[j++]=res%10,res/=10);
//运算结束时,最高位(res)的值为p
while(res!=p)
{
//计算第i个结果,同时应该是第i+j个数位的值
res=a[i]*q+res/10;
//赋值
a[i+j]+=res%10;
i++;
}
while (i--)
printf("%d",a[i]);
printf("\n");
}
}
搞不定了……飞燕帮忙看看,计算一位p的时候结果正确,但是如果p不止一位了,终止条件似乎就没有作用了。比如10 6,老是在没算完的时候就停止计算了……当i=74的时候,a[i]=7,原res=41,1已经赋值给a[i+j-1]=a[75],res=7*6+41/10=46,并将个位6赋值给a[i+j]=a[76]。然后i=75,a[i]=1(73计算出来的),原res=46,res=1*6+46/10=10,这个10是要赋值给a[i+j]和a[i+j+1]的,按理说这个时候应该计算完了,从第78位开始是1,77是0,然后从76开始就应该是答案61769616026711185308848080133555926544240400667779632721202003338898163606010
但是这个数字乘以6的结果是:370617696160267111853088480801335559265442404006677796327212020033388981636060,前面多了370三个数字……为什么呢?纠结……真正的停止计算的条件是什么啊?飞燕教一下………………