description
從鍵盤輸入乙個自然數k(99999999>k>1),若存在自然數m和n(m>n),使得k的m次方和k的n次方均大於或等於1000,
且它們的未尾三位數相等,則稱m和n是一對「k尾相等數」。請程式設計序,輸出k尾相等數中m+n最小值。
輸入樣例
2輸出樣例
120因為1 < k < 99999999 所以k的次方可能是超範圍的數,但題目只要求次方中的末尾三位相等。
可以得到下列運算過程:
在 k * k * k * k * k…的過程中每做完乙個運算(即k * k)將結果 % 1000,儲存餘數並且用
餘數繼續k的次方運算。因為對1000取餘數結果必定小於1000,所以餘數乘上k也不會超範圍,
並且對1000取餘數的結果數最多只有1000個(0 - 999),所以只需1000次運算後必定出現
重複,即 k的m次方%1000 == k的n次方%1000
將1001個餘數儲存後遍歷陣列即可得到最小m+n
#includeint main()
// 迴圈1001次,必定出現餘數重複
while(i < 1002)
for(int w = 0; w < i - 1; w ++)
}printf("%d\n", min);
return
0;}
K尾相等數
problem 105 k尾相等數 time limit 3 ms memory limit 64 mb difficulty 1 description 輸入乙個自然數k k 1 如果存在自然數m和n m n 使得k m和k n均大於等於1000,且他們的末尾三位數相等,則稱m和n是一對 k尾相等...
K尾相等數問題
描述乙個自然數k 2 k 若存在自然數m和n m大於n 使得k m和k n均大於或等於1000,且它們的末尾三位數相等,則稱m和n是一對 k尾相等數 輸入 輸入包含若干個測試用例,每個測試用例佔一行,為乙個自然數k。輸出 對每個測試用例,用一行輸出符合要求的最小m n值。樣例輸入2 樣例輸出 120...
K尾相等數問題
k尾相等數問題 描述乙個自然數k 2 k 若存在自然數m和 n m大於 n 使得 k m和 k n均大於或等於 1000 且它們的末尾三位數相等,則稱m和 n是一對 k尾相等數 輸入輸入包含若干個測試用例,每個測試用例佔一行,為乙個自然數k。輸出對每個測試用例,用一行輸出符合要求的最小m n值。樣例...