ACM複習(5)1076 K尾相等數

2021-08-09 17:17:31 字數 700 閱讀 1244

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值。樣例...