PAT-乙-1091 1091 N-自守数 (15 分)
代码
#include <iostream>
#include <sstream>
using namespace std;
string intToString(int a){
stringstream ss;
ss<<a;
string s;
ss>>s;
return s;
}
int main() {
int m;
cin>>m;
for(int i=0; i<m; i++) {
int a;
cin>>a;
string astr = intToString(a);
int bb = 1;
for(int j=0; j<astr.length(); j++){
bb *= 10;
}
bool flag = true;
for(int j=1; j<10; j++){
int b = j*a*a;
if(b%bb==a){
flag = false;
cout<<j<<" "<<b<<endl;
break;
}
}
if(flag){
cout<<"No"<<endl;
}
}
return 0;
}
注解
1、先根据输入的数字长度,求出对应的末n位数,用于下面的取余操作。
2、从1-9遍历,然后取余,看末n位是否满足题意,如果满足就输出。