トピック:
入力nは、計算S = 1!+ 2!+ 3!+ ... + nは!(0をリードせずに)最後の6。N <= 10 ^ 6、n個!これは、最初のnは正の整数の積を表します。
サンプル入力:
10
出力例:
37913
アイデア:
記録の和、階乗のそれぞれを表すために使用される用語と合計するアキュムレータ。
第一の方法は、非常に満足ダブルループアルゴリズムを使用することです。
各二重ループを回避するように、既に計算階乗結果を利用することができるように、第二の方法は、公知の観察は、前の現在の項目数を乗じた値に等しいです。
また、大量に乗算オーバーフローの問題に注意してください。溶液:各電流計算結果の完了後、すぐにモジュロを行い、その後すぐモジュロ実行すべき各累積和後。
コード:
書式#include <iostreamの>
名前空間stdを使用。
INTメイン()
{
CONST INT MOD = 1000000。
INT和= 0、n = 0です。
cinを>> N;
以下のために(INT I 1 =; I <= N; ++ I){
int型の静的期間= 1。
用語* = I;
和+ =(用語%MOD)。
}
COUT <<和%MOD << ENDL。
0を返します。
}