如果某個數 K 的平方乘以 N 以后,結果的末尾幾位數等於 K,那么就稱這個數為“N-自守數”。例如 3×922=25392,而 25392 的末尾兩位正好是 92,所以 92 是一個 3-自守數。
本題就請你編寫程序判斷一個給定的數字是否關於某個 N 是 N-自守數。
輸入格式:
輸入在第一行中給出正整數 M(≤20),隨后一行給出 M 個待檢測的、不超過 1000 的正整數。
輸出格式:
對每個需要檢測的數字,如果它是 N-自守數就在一行中輸出最小的 N 和 NK2 的值,以一個空格隔開;否則輸出 No
。注意題目保證 N<10。
輸入樣例:
3
92 5 233
輸出樣例:
3 25392
1 25
No
代碼:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #define MAX 10000 #define DMAX 10000 using namespace std; typedef long long ll; int m,k; int main() { scanf("%d",&m); for(int i = 0;i < m;i ++) { scanf("%d",&k); int j; int c = 1; int ans = 0; for(j = (int)(log10(k) + 1);j > 0;j --) { c *= 10; } for(j = 1;j < 10;j ++) { ans = k * k * j; if(ans % c == k) break; } if(j < 10) printf("%d %d\n",j,ans); else puts("No"); } }