番号の末尾POJ 1401階乗0

GSMネットワークの最も重要な部分はそう基地送受信局(BTS)と呼ばれます。これらのトランシーバは、セルと呼ばれる領域(この用語は、携帯電話に名前を与えた)および(少し簡略ビュー)最も強い信号を有するBTSのすべての電話コネクトを形成します。もちろん、BTSesは、いくつかの注意が必要と技術者は、定期的にその機能を確認する必要があります。

ACMの技術者は、最近、非常に興味深い問題に直面しました。訪問するBTSesのセットを考えると、彼らは与えられた点のすべてを訪問し、中央の会社の建物に戻りへの最短パスを見つける必要がありました。プログラマは、この問題を研究し、数ヶ月を過ごしたが、何もありませんしています。彼らは、ソリューションの速いのに十分なを見つけることができませんでした。長い時間の後、プログラマーの一つは、会議の記事で、この問題を発見しました。残念ながら、彼は問題がそう「セールスマン問題の旅」と呼ばれ、それを解決するのは非常に困難であることがわかりました。我々はN BTSesが訪問する必要がある場合は、私たちは私たちNを与えて、任意の順序でそれらを訪問することができます!検討する可能性。その番号を表す関数は階乗と呼ばれ、製品1.2.3.4 ... Nとして計算することができます。数が比較的小さなN.のための非常に高いです

プログラマは、彼らが問題を解決する機会がなかった理解しました。彼らはすでに政府からの研究助成金を受けているので、しかし、彼らは彼らの研究や生産物の少なくともいくつかの結果を続行する必要がありました。階乗関数の挙動を研究し始めた彼らはそう。

例えば、それらはNの整数任意の正の関数Zを定義、Z(N)は、数Nの小数点形式の末尾のゼロの数であります!彼らは、この機能が低下したことがないことに気づきました。我々は2つの数値を持っている場合はN1 <N2、そしてZ(N1)<= Z(N2)。我々は任意の正の数を乗じて後続のゼロ「を失うことはありませ」決してができるからです。私たちは、新しい、新しいゼロを得ることができます。我々は効率的にその値を決定することができるコンピュータプログラムを必要とするので、関数Zは、非常に興味深いです。

入力
入力の最初の行にT整数単一の正があります。それは従うべき番号の数を表します。次いで、Tラインは、それぞれ正確に一つの正の整数N、1 <= N <= 1000000000を含む、ある
出力
単一非負整数Z(N)を含むあらゆる数N、出力1ライン分を。
SampleInput
6
3
60
100
1024個の
23456
8735373
SampleOutput
0
14
24
253
5861
2183837

質問の意味:計算の最後にゼロの数の階乗
のアイデア:私たちは第一の端部には0が生成されます理由について考えなければならないので、データの暴力の大規模な範囲は、確かに望ましいことではない、1場所で最初に見て10にのみ2 * 5 = 10我々はわずか2〜5よりの因子に結合した多数の因子のいずれかのために、数2及び数5を数える必要があるので、このように、末尾に0を生成する、より少ない計算するだけでよいです。

#include <iostream>

using namespace std;

int main()
{
    int t;

    cin >> t;

    while(t--)
    {
        long long n;
        cin >> n;

        int res=0;
        while(n)
        {
            res+=n/5;
            n/=5;
        }

        cout << res << endl;
    }

    return 0;
}
发布了54 篇原创文章 · 获赞 0 · 访问量 1228

おすすめ

転載: blog.csdn.net/weixin_44144278/article/details/99358835