PAT 乙级 1091 N-自守数 (15 分)
按照题目意思硬做
#include <iostream>
using namespace std;
int key,wss=0;
bool fuc(int a,int b){
int h=a*a;
int m=h*b;
int num=wss;
while(num--){
if(m%10!=a%10)return false;//有一位不相等就返回
m/=10;//算下一位
a/=10;
}
return true;
}
int main(){
int n;
cin>>n;
int key;
while(n--){
bool A=1;
cin>>key;
int t=key;
while(t!=0){
wss++;//计算输入数字的位数
t/=10;
}
for(int i=0;i<11;i++){//最多到10
if(fuc(key,i)){
cout<<i<<" "<<i*key*key;
A=0;
break;
}
}
if(A)cout<<"No";
if(n!=0)cout<<endl;
wss=0;
}
return 0;
}