题意:给一个进制数 最后一位数 和 乘数 要求求出最小的位数 满足 最后一位数变成第一位 其余的数不变 位置可以变
下面是copy 别人的分析:
这个题一开始没看懂什么意思,所以就放在那没做,还是今天pengnix跟我说了这个题,才开始做的。
题目就是给出三个数,jinzhi,lastnumber,chengshu.求出在jinzhi进制下最少几位数a使得a*chengshu的值最后一位变成最前一位,其他不变。为了说明问题,还是拿题目说明测试数据来说吧。
179487 * 4 = 717948(10进制)
4*7=28 28!=7 28/10=2 28=8;
4*8+2=34 34!=7 37/10=3 34=4;
4*4+3=19 19!=7 19/10=1 19=9;
4*9+1=37 37!=7 37/10=3 37=7;
4*7+3=31 31!=7 31/10=3 31=1;
4*1+3=7 7==7;(end)
为什么可以这样做呢 我们可以观察到 前一个数的余数一定是下一个数的乘数 这样算下来就满足 最后一位数变成第一位 其余的数不变的条件了
#include<cstdio>
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif // LOCAL
int b,last,f;
while(scanf("%d%d%d",&b,&last,&f) !=EOF)
{
int i,cnt,N;
N = last;
i = cnt = 0;
while(1)
{
if(last*f+i == N)
{
cnt++;
break;
}
cnt++;
last = last*f+i;
i = last/b;
last = last % b;
}
printf("%d\n",cnt);
}
return 0;
}