階乘之和取後六位以及有趣的計時函式。

不被看好的青春叫成長發表於2015-03-31

     題目:輸入n,計算S=1!+2!+3!+···+n!的末6位(不含前導0)。n<=10^6.這裡,n!表示前n個正整數之積。

    樣例輸入:10

    樣例輸出:37913.

程式碼如下:

#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
const int MOD=1000000;
int main()
{
    int i,j,n,S=0;
    cin>>n;
    for(i=1;i<=n; i++)
    {
        int factorial=1;
        for (j=1;j<=i; j++)
            factorial=(factorial*j%MOD);
        S=(S+factorial)%MOD;
    }
    cout<<S<<endl;
    cout<<"Time used="<<setiosflags(ios::fixed)<<setprecision(2)<<(double)clock()/CLOCKS_PER_SEC;
    return 0;
}


執行結果:

學習心得:

題目要求並不是很難,但也從這個題目找到了點感覺。

原題目是書上的,用的c語言,有趣的是這個計時函式從來沒有接觸過,感覺很新奇。

發現了一個從來沒注意的問題,同樣的程式,同樣的輸入,codeblocks執行的時間也不一樣,不知道這是為何,是否鍵盤輸入的時間也被計算進入了?

相關文章