UVA - 550 Multiplying by Rotation

来源:互联网 发布:node.js 安装 编辑:程序博客网 时间:2024/03/28 22:58

题目大意:一个数 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 ) ;  }}
0 0