1. 程式人生 > >PAT 1091 N-自守數

PAT 1091 N-自守數

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; }