題目:
如果某個數 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<stdio.h> int main() { int i, M, j, k; int arr[20]; int t = 0; int count , middle , f, s; scanf("%d", &M); //M表示要輸入幾個數 for (j = 0; j < M; j++) { scanf("%d", &arr[j]); //輸入M個數,存放在數組中 } for (k = 0; k < M; k++) { s = arr[k]; count = 0; middle = 1; do { count++; arr[k] = arr[k] / 10; //count計數,計算每個數是幾位數 } while (arr[k] > 0); for (int q = 0; q < count; q++) { middle = middle * 10; } for (i = 1; i < 10; i++) { t = s * s*i; f = t; t = t % middle; if (t == s) { printf("%d %d\n", i, f); break; } else { if (i + 1 == 10) { printf("No\n"); } } } } return 0; }