550 - Multiplying by Rotation

来源:互联网 发布:360全景软件下载 编辑:程序博客网 时间:2024/04/25 07:32

题目:550 - Multiplying by Rotation

#include<stdio.h>int d, n, m;int main() {int a , y, k;while(scanf("%d %d %d", &d, &n, &m) != EOF) {a = 0; y = n;k = (y * m + a);y = k % d ;a = k / d;int count = 1;while(a || y != n) {k = (y * m + a);y = k  % d ;a = k  / d;count ++;}printf("%d\n", count);}return 0;}


题目大意:就是给一个数n,求他再进制d的情况下使低位的n变成高位第一位,求这样的数的位数。


解题思路: k = n与乘数m相乘 + a,k 除以进制d得到的余数作为下一轮的乘数,得到的商最为下一轮的a, 位数加1。直到a == 0 && 余数 == 原来的n 就退出,输出位数。



0 0
原创粉丝点击