zrq495
www.zrq495.com

题意:给出一个进制,一个数的最低位,和另外的一个数,比如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 }
posted on 2012-07-31 20:06  zrq495  阅读(527)  评论(0编辑  收藏  举报