题目
链接:PAT (Basic Level) Practice 1091 N-自守数
如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”。例如 ,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守数。
本题就请你编写程序判断一个给定的数字是否关于某个 N 是 N-自守数。
输入格式:
输入在第一行中给出正整数 M(≤20),随后一行给出 M 个待检测的、不超过 1000 的正整数。
输出格式:
对每个需要检测的数字,如果它是N-自守数就在一行中输出最小的N和 的值,以一个空格隔开;否则输出 No。注意题目保证 N<10。
输入样例:
3
92 5 233输出样例:
3 25392
1 25
No
思路
以题中为例,当数K为92,自守数N为3时,有% 100 = 0。推广即得%
代码
#include<stdio.h>
int len(int K); //该函数返回10的K的长度次方。
int main()
{
int M, K, l, flag;
scanf("%d", &M);
for(int i = 0; i < M; i++){
scanf("%d", &K);
l = len(K);
flag = 0; // flag标记K是否有自守数
for(int j = 0; j < 10; j++){
if((j * K * K - K) % l == 0){
printf("%d %d\n", j, j*K*K);
flag = 1;
break; //得到最小自守数后直接break
}
}
if(flag == 0) printf("No\n");
}
return 0;
}
int len(int K){
int len = 1;
while(K){
len *= 10;
K /= 10;
}
return len;
}
---END---
其它相关问题
PAT-B 1092 最好吃的月饼(C语言)
PAT-B 1093 字符串A+B(C语言)
PAT-B 1094 谷歌的招聘(C语言)
PAT-B 1095 解码PAT准考证(C语言)
网友评论