nyoj 212 K尾相等數

2021-06-25 21:49:03 字數 1056 閱讀 5276

時間限制:

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的最小值;

樣例輸入

1

2

樣例輸出

120

** poj

//思路是每次相乘後都取餘,以餘數為索引將指數存到陣列中,若餘數相同的存在,則直接返回當前指數與對應陣列元素的和。經典題。

#include #include int sign[1001]; //索引

int f(long long k)

sign[k %= 1000] = i++;

for(j = 1; j <= 1001; ++j, ++i)

if(sign[k = (k * t) % 1000])

return i + sign[k];

else sign[k] = i;

}int main()

#include int findk(int k)

; //記錄資料

int count = 0,s = 1;

while(s < 1000) // 遍歷出第乙個大於1000的數

s %= 1000;

k %= 1000;

ans[s] = count;

while(true) // 需找出現的第二個數,即尾數相等。 }

int main()

}//最優**

#include#includeint main()

} 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...

K尾相等數 NYOJ212

題目描述 從鍵盤輸入乙個自然數k k 1 若存在自然數m和n m n 使得k m和k n均大於或等於1000,且他們末尾三位數相等,則稱m和n是一對 k尾相等數 編寫一程式,輸出m n值最小的k尾相等數。測試輸入資料 2 測試輸出資料 120 思路 最開始想錯了,蛋疼了很久。仔細思考後,我們可以注意...

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