本文主要是介绍nyoj-212-k尾相等数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
K尾相等数
时间限制: 3000 ms | 内存限制: 65535 KB
难度: 1
- 描述
- 输入一个自然数K(K>1),如果存在自然数M和N(M>N),使得K^M和K^N均大于等于1000,且他们的末尾三位数相等,则称M和N是一对“K尾相等数”。下面请编程求出M+N最小的K尾相等数。
- 输入
- 第一行包含一个正整数T,T<10000,表示有T组数据;
随后有N行,每行包括一个整数K(K<2*10^10); 输出 - 对于输入的每个整数K,输出对应的M+N的最小值; 样例输入
-
1 2
样例输出 -
120
#include<stdio.h> int main() {int s,i,j;long long k,n,m;scanf("%d",&s);while(s--){scanf("%lld",&k);n=1;i=0;while(n<1000){n*=k;i++;}while(1){n%=1000;for(m=1,j=1;j<i;j++){m*=k;while(m<1000){m*=k;j++;}m%=1000;if(m==n&&i>j)break;}if(m==n&&i>j)break;n*=k;i++;}printf("%d\n",i+j);}return 0; }
- 第一行包含一个正整数T,T<10000,表示有T组数据;
这篇关于nyoj-212-k尾相等数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!