時間限制:
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
樣例輸出
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尾相等...