PAT B1091 N-自守数
2021-04-22 本文已影响0人
LinkLiKang
之所以提到这道题,不是因为这道题难。是因为在做这道题的时候,犯了一个低级的错误。
注意,题中给出的“No”,“o”是小写,我写的时候,写成了大写“O”。反复确认了我写的代码没有逻辑错误,仔细对照题目才发现这个问题。
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
const int maxn = 101;
int a[maxn] = {0};
bool compare(int a, int b){//a的后几位是否与b相等
while (true) {
if(a % 10 != b % 10){
return false;
}else{
a = a / 10;
b = b / 10;
if(a == 0 || b == 0){
break;
}
}
}
return true;
}
int main(){
int M, num;
scanf("%d", &M);
for (int i = 0; i < M; i++) {
scanf("%d", &num);
a[i] = num;
}
for(int i = 0; i < M; i++){
int result;
int j;
for(j = 1; j < 10; j++){
result = a[i] * a[i] * j;
if(compare(result, a[i])){
printf("%d %d\n", j, result);
break;
}
}
if(j >= 10){
printf("NO\n");
}
}
return 0;
}