ポータルます。http://noi.openjudge.cn/ch0106/15/
-
高精度Sで計算= 1!2!3!+ ... + N!(N≤50)
前記、例えば:! 5 4 = 5 * 3 * 2 * 1 * "!" 階乗示します。
正の整数Nを入力し、演算結果Sを出力します。
- エントリー
- 正の整数N.
- 輸出
- 結果S.
- サンプル入力
-
5
- サンプル出力
-
153
書式#include <iostreamの> 使用して 名前空間はstdを、 #define N 100000 INT [N]、N、TOT = 1、レナ= 1 、ANS [N]。 INT メイン() { CIN >> N。 [ 1 ] = 1 ; ANS [ 1 ] = 1 。 以下のために(int型 I = 2 ; iが<= N; iは++ ) { ための(int型 J = 1 ; J <=レナ; J ++)[J] * = I。 以下のための(int型 J = 1 ; J <=レナ; J ++) { 場合([J]> 9 ) { [J + 1 ] + = [J] / 10 。 [J]%= 10 。 もし(J ==レナ)レナ++ ; } } TOT = MAX(レナ、TOT)。 用(INT J = 1 ; J <= TOT; J ++ ) ANS [J] + = [J]。 以下のための(int型 J = 1 ; J <= TOT; J ++ ) の場合(年[J]> 9 ) { 年[J + 1 ] ++ ; 年[J] - = 10 ; もし TOT ++(TOT jは==) 。 } } // COUT << ENDL << TOT。 以下のために(int型私はTOTを=; I> = 1 ; I - )COUT << 年[I]。 coutの << てendl; }