题目链接:?problem=1138
题意:问 N! 末尾 0 的个数为 Q 个的数是什么?
解法:二分枚举N,因为0是由5×2 出现的,,2的个数比5多故计算5的个数即可。
代码:
;n){long long num = 0;while (n){num += n / 5;n /= 5;}return num;}int main(){int t;scanf(“%d”,&t);int cases = 1;while (t–){int n;scanf(“%d”,&n);printf(“Case %d: “,cases++);long long left = 1;long long right = 1000000000000;long long mid;while (left <= right){mid = (right + left) / 2;long long tmp = count_num(mid);if (tmp >= n)right = mid – 1;elseleft = mid + 1;}if (count_num(left) != n)puts(“impossible”);elseprintf(“%lld\n”,left);}return 0;}
那么前世我的目光一定一刻都没从你身上离开过吧!