LightOJ1138 末尾のゼロ(III)
タグ
- 二部
序文
- 私のブログのCSDNと庭園が同期され、ようこそdanzh-ブログパークを〜
質問の簡潔な意味
- Q(Q <= 1E8)を考えると、このようなQ N!N Q最小最後のビットゼロこと。
思考
- Qは、エンドゼロの数、この手段その素因数分解、2,5 == Qの最小屈折率を有します。
- N !,注目します
注意事項
概要
- Qは、エンドゼロの数、この手段その素因数分解、2,5 == Qの最小屈折率を有します。
- 我々はそれにのみインデックス5を検討するように、n個!いずれかのn、インデックスは、2指数5以上でなければなりません。今、私たちは、インデックスがそうでなければ不可能、5のqに等しいようにする必要があります。
- Q最大の1e8,1e8答えはイエスおそらく5E8です。列挙の順序は、ここで我々は2つです、Tになります。大きい方のnことがわかっているので、より多くのインデックス5。
- TELL下の計算方法のn!どのように多くの数の約5あります。ここで包含と除外は、結果があります
ACコード
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
int cal(int x)
{
int ans = 0;
int cur = 5;
while (cur <= x)
ans += x / cur, cur *= 5;
return ans;
}
void solve()
{
int t;
scanf("%d", &t);
for (int k = 1; k <= t; k++)
{
int n;
scanf("%d", &n);
int l = 5, r = 5e8, ans = 1e9;
while (l <= r)
{
int mid = (l + r) / 2;
if (cal(mid) >= n)
r = mid - 1, ans = mid;
else
l = mid + 1;
}
if (cal(ans) == n)
printf("Case %d: %d\n", k, ans);
else
printf("Case %d: impossible\n", k);
}
}
int main()
{
freopen("Testin.txt", "r", stdin);
solve();
return 0;
}