模拟乘法的过程,当乘积的新得到的一位和a0相同且进位为0的时候,就达到了factor1的最小长度。
代码:
#include <stdio.h>
void func(int base, int a0, int k)
{
int jinwei; //进位数
int count, fac1_bit, mul_bit;
count = 0;
fac1_bit = a0;
jinwei = 0;
while(1)
{
mul_bit = (fac1_bit*k+jinwei) % base;
jinwei = (fac1_bit*k+jinwei)/base;
count ++;
if(mul_bit==a0 && jinwei==0)
break;
fac1_bit = mul_bit;
}
printf("%d\n", count);
}
int main(void)
{
int base, a0, k;
while(scanf("%d %d %d",&base,&a0,&k) != EOF)
{
func(base, a0, k);
}
return 0;
}