description
you task is to find minimal natural numbern, so thatn!contains exactlyqzeroes on the trail in decimal notation. as you known! = 1*2*...*n. for example, 5! = 120, 120 contains one zero on the trail.
input
input starts with an integert (≤ 10000), denoting the number of test cases.
each case contains an integerq (1 ≤ q ≤ 108)in a line.
output
for each case, print the case number andn. if no solution is found then print'impossible'.
sample input31
25
sample output
case 1: 5
case 2: 10
case 3: impossible
思路分析:剛開始以為只要n!裡每出現乙個5的倍數,結果的末尾就會多乙個0.所以若結尾有n個0,n 的最小值是5n,後來發現錯了,如25和4的積有2個0,125和8 的積有3個0。
5 10 15 25 35 75 125
5*1 5*2 5*3 5*5
5*7 5*5*3 5*5*5 (5的個數和下面0的最多個數相等)
5*2=10 10*2=20 15*2=30 25*4=100 35*4=140 75*4=300 125*8=1000
5! 5 0
10! 5、10 00
15! 5、10、15 000
20! 5、10、15、20 0000
25! 5、10、15、20、25 000000
27! 5、10、15、20、25 000000
my solution:
/*2015.9.18*/
#includeint tongji5(int x)/*求1—x數字中5的個數*/
return ans;
}int fun(int a)
high-=high%5;/*轉化,當前求得的high值,不是題目所要求的(滿足限制條件:0的個數)最小數字*/
if(tongji5(high)==a)
return high;
/* high: 從較大數遞減進行查詢滿足題目要求的數字,因而查詢到的是滿足題目要求(滿足限制條件:0的個數)的最大數字.
low: 從較小數遞增進行查詢滿足題目要求的數字,因而查詢到的是滿足題目要求(滿足限制條件:0的個數)的最小數字.
上面的**等效於:
while(low<=high) 0的個數 1 2 3 4 6
if(tongji5(low)==a)
return low;
*/ else
return 0;
}int main()
return 0;
}
迭代二分查詢二分查詢
在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...
1128 二分 二分查詢
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...
二分查詢及變種二分查詢
二分查詢也稱折半查詢 binary search 它的查詢效率很好。二分查詢有乙個要求是必須採用順序儲存結構,而且表種的元素是有序的。只有滿足這個條件我們才能使用二分查詢。查詢條件 查詢區域的左邊界,小於等於查詢區域的右邊界 查詢過程 1.迴圈條件 查詢條件 2.計算序列中間下標位置 3.如果待查詢...