1091 N-自守數 (15分)
阿新 • • 發佈:2020-08-08
題目
如果某個數 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。
輸入樣例
3
92 5 233
輸出樣例
3 25392 1 25 No
解析
利用to_string()將整數轉字串,substr()提取NK2後幾位比較答案
#include<iostream> #include<string> #include<algorithm> using namespace std; int a; bool isSelf(string x){ string y = to_string(a); string z = x.substr(x.length() - y.length()); if(z == y) return true; return false; } int main(){ int M; cin >> M; while(M--){ cin >> a; int flag = 1; for(int i = 1 ; i < 10 ; i ++){ if(isSelf(to_string(i*a*a))){ cout << i << " " << i * a * a << endl; flag = 0; break; } } if(flag) cout << "No" << endl; } }