PAT 1091 N-自守數
阿新 • • 發佈:2019-01-13
1091 N-自守數
如果某個數 K 的平方乘以 N 以後,結果的末尾幾位數等於 K,那麼就稱這個數為“N-自守數”。例如 3×92^2=25392,而 25392 的末尾兩位正好是 92,所以 92 是一個 3-自守數。
本題就請你編寫程式判斷一個給定的數字是否關於某個 N 是 N-自守數。
輸入格式:
輸入在第一行中給出正整數 M(≤20),隨後一行給出 M 個待檢測的、不超過 1000 的正整數。
輸出格式:
對每個需要檢測的數字,如果它是 N-自守數就在一行中輸出最小的 N 和 NK^2的值,以一個空格隔開;否則輸出 No。注意題目保證 N<10。
輸入樣例:
2
輸出樣例:
3 25392
1 25
No
程式碼如下(c++):
#include <iostream>
#include <cmath>
using namespace std;
int judge(int,int);
int fun(int);
int main()
{
int m,n;
cin>>m;
while(m--){
cin>>n;
int t = fun(n);//得到所需擷取的位數
int i,x;
for(i=1;i<10;i++){
x = i*n*n;
int y = judge(x,t);
int z = judge(y,t);//兩個judge得到擷取t位的數
if(n==z) break;
}
if(i==10) cout<<"No"<<endl;
else{
cout<<i<<" "<<x<<endl;
}
}
return 0;
}
int fun(int t){
int i = 0;
while(t){
t=t/10;
i++;
}
return i;
}
int judge(int x,int t){
int sum = 0;
while(t--){
int y = x%10;
x = x/10;
sum = sum*10+y;
}
return sum;
}