uva 550——Multiplying by Rotation

来源:互联网 发布:网络管理和网络道德 编辑:程序博客网 时间:2024/04/25 15:38
题意:在一个进制内 比如十进制下179487 * 4 = 717948和9进制下17 * 4 = 71 给定三个数,一个是进制,一个数是该组数的最后一个数字,另外一个则是该组数中的一个因数,问该组数中另一个因数是多少位数。

思路:由最后一位数和因数可以求出来前一位数的数字,然后依次类推,一直到第一位数等于最后一位数,实际上就是一个不断模拟的过程。

code:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;

int cal(int ba,int la,int dv)
{
int cnt=0,t;
t=la*dv;
while (t!=la) //不断算前前一位,直到其等于给定的最后一位
{
int qi=t/ba;
t%=ba;
cnt++;
t=dv*t+qi;
}
return cnt+1;
}
int main()
{
int ba,la,dv;
while (~scanf("%d%d%d",&ba,&la,&dv))
printf("%d\n",cal(ba,la,dv));
}

0 0
原创粉丝点击