K尾相等數 NYOJ212

2021-06-18 11:45:40 字數 640 閱讀 3675

題目描述:

從鍵盤輸入乙個自然數k(k>1),若存在自然數m和n(m>n),使得k^m和k^n均大於或等於1000,且他們末尾三位數相等,則稱m和n是一對「k尾相等數」。編寫一程式,輸出m+n值最小的k尾相等數。

測試輸入資料: 2

測試輸出資料:

120

思路:

最開始想錯了,蛋疼了很久。仔細思考後,我們可以注意到,任何數對1000求模只有1000種可能(0~999),所以我們將k^power 中的power從1到1001逐個求值,總有相等的兩個數字。因為結果只有1000種可能,但是有1001次求值,哪怕前1000次所求結果都不一樣,最後一次的值必然與前面1000種其中的一種相等。

這裡我用mark陣列儲存上一次後三位是這個值時應該是幾次方,只要掃瞄發現它不是0就可以判斷出現了重複。

#include#includeusing namespace std;

int main()

int temp=1;

for(i=1;i<=1001;i++)//第幾次方

mark[temp]=i;//mark陣列儲存上次後三位是temp時它是k的幾次方}}

}return 0;

}

nyoj 212 k尾相等數

時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 輸入乙個自然數k k 1 如果存在自然數m和n m n 使得k m和k n均大於等於1000,且他們的末尾三位數相等,則稱m和n是一對 k尾相等數 下面請程式設計求出m n最小的k尾相等數。輸入第一行包含乙個正整數t,t 100...

nyoj 212 K尾相等數

時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 輸入乙個自然數k k 1 如果存在自然數m和n m n 使得k m和k n均大於等於1000,且他們的末尾三位數相等,則稱m和n是一對 k尾相等數 下面請程式設計求出m n最小的k尾相等數。輸入第一行包含乙個正整數t,t 100...

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尾相等...