题目大意:一个数 A 乘以 B 的结果,是将 A 的最后一位数提到第一位所形成的数字。输入进制 k 、最后一位数 m 、乘数 n , 输出该数据有几位。
解题思路:已知最后一位 m,则 mn%k 为倒二数字(乘 n 后的末位)且有进位到倒三数字(进位了 mn/k);mn%kn + m*n/k 为倒三数字(乘 n 后的倒二位),依次类推,当取到一位数字与末位相等且不再进位,输出。
#include<cstdio>
int main() {
int m, n, k;
int cnt , s;
while( scanf("%d%d%d" , &k, &m , &n) != EOF) {
cnt = 1;
s = m*n;
for(; s != m ; ) {
s = s % k * n + s/k ;
cnt ++ ;
}
printf( "%d\n", cnt ) ;
}
}