Trailing Zeroes (III)【二分】

题目链接:?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;}

那么前世我的目光一定一刻都没从你身上离开过吧!

Trailing Zeroes (III)【二分】

相关文章:

你感兴趣的文章:

标签云: