PAT 乙級 1091.N-自守數 C++/Java

題目來源html

若是某個數 K 的平方乘以 N 之後,結果的末尾幾位數等於 K,那麼就稱這個數爲「N-自守數」。例如 3,而 2 的末尾兩位正好是 9,因此 9 是一個 3-自守數。ios

本題就請你編寫程序判斷一個給定的數字是否關於某個 N 是 N-自守數。spa

輸入格式:

輸入在第一行中給出正整數 M(≤),隨後一行給出 M 個待檢測的、不超過 1000 的正整數。code

輸出格式:

對每一個須要檢測的數字,若是它是 N-自守數就在一行中輸出最小的 N 和 NK2​​ 的值,以一個空格隔開;不然輸出 No。注意題目保證 0。htm

輸入樣例:

3
92 5 233

輸出樣例:

3 25392
1 25
No

分析:

計算出 $K$ 和 $K×K$blog

將$n×K^2$和$K$轉成字符串,比較末尾的字符是否相同ip

當循環10次仍然不一樣就輸出Noci

C++實現:

 1 #include <iostream>
 2 #include <vector>
 3 #include <string>
 4 using namespace std;
 5 
 6 int main()
 7 {    
 8     int M;
 9     cin >> M;
10     int K;
11     for (int i = 0; i < M; ++i)
12     {
13         cin >> K;
14         int num = K * K;
15         for (int j = 1; ; ++j)
16         {
17             string s1 = to_string(j * num);
18             string s2 = to_string(K);
19             s1 = s1.substr(s1.size() - s2.size(), s1.size());
20             if (s1 == s2)
21             {
22                 cout << j << " " << j * num << endl;
23                 break;
24             }
25             if (j == 10)
26             {
27                 cout << "No" << endl;
28                 break;
29             }            
30         }
31     }
32 
33     return 0;
34 }

 

 

Java實現:

相關文章
相關標籤/搜索