Java K尾相等數

2021-07-29 07:19:03 字數 903 閱讀 2652

時間限制: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<10000,表示有t組資料;

隨後有n行,每行包括乙個整數k(k<2*10^10);

輸出對於輸入的每個整數k,輸出對應的m+n的最小值;

樣例輸入12

樣例輸出

這是一道很有意思的題。雖然難度是1.但是通過尋找好的答案,也學到了很多,特地在此總結下。

一開始我的思路:首先1、用biginteger肯定是正解,2、對1000取餘,然後用個陣列儲存下來3、迴圈遍歷是否相同

沒做出來後:分析問題:首先是超時嚴重。因為輸入乙個大數後,乘法運算要好久。

其次、如何判斷m和n是最小,一開始考慮的迴圈遍歷肯定不行了。

正確思路:發現一些小的東西。我只要對後3未數進行乘法運算就好。例如2 當2大於1000時勢1024 取024也就是24 然後24*2=48 ;48取餘1000是48;48再乘2

依次,這樣就解決了資料過大導致超時問題。

如何判斷m和n相加最小?

我看了網上的答案,發現用乙個1000範圍的int型別陣列。因為對1000取餘後,他餘數的範圍是0~999.所以看**就ok

static biginteger aa;

public static void main(string args)else

} }public static int recursion(biginteger big)

} aa=big;

return test;

}

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