题意:给出一个进制,一个数的最低位,和另外的一个数,比如10进制,第一个数字的最低位是7,第二个数字是4,
和规则(XXXXX7 * 4 = 7XXXXX,例子: 179487 * 4 = 717948 )求出第一个数字的最小长度。
看起来很难,其实动笔写写就明白了。
输入k,m,n,原来的数字为s,因为s的最后一位为m,则s*n的最后一位为s*n%k,而s*n%k又是s的倒数第二位,这样又可以计算出ans*n的倒数第二位;
以此类推,直到乘积+原来的进位==最低位。
代码如下:
1 #include<iostream> 2 3 using namespace std; 4 5 int main() 6 { 7 int k, m, n; 8 while(cin >> k >> m >> n) 9 { 10 int cnt=1; 11 int s=m*n; 12 while(s != m) 13 { 14 s=s%k*n+s/k; 15 cnt++; 16 } 17 cout << cnt << endl; 18 } 19 return 0; 20 }