之所以提到這道題欧瘪,不是因為這道題難眷射。是因為在做這道題的時候,犯了一個低級的錯誤佛掖。
注意妖碉,題中給出的“No”,“o”是小寫芥被,我寫的時候欧宜,寫成了大寫“O”。反復(fù)確認了我寫的代碼沒有邏輯錯誤拴魄,仔細對照題目才發(fā)現(xiàn)這個問題冗茸。
#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;
}