C ++でパスカル三角形の合計1500行を計算しようとしています。
Web 中から 6 つ以上の異なるコード スニペットを試しました。
10列目前に墜落したものもあれば、発狂したものもありました。
パスカル三角形の 1500 行目の数値の合計を計算するにはどうすればよいですか。
反復によってプログラムがクラッシュするため、各行を反復せずに行を見つける式が必要だと思います。
C ++でパスカル三角形の合計1500行を計算しようとしています。
Web 中から 6 つ以上の異なるコード スニペットを試しました。
10列目前に墜落したものもあれば、発狂したものもありました。
パスカル三角形の 1500 行目の数値の合計を計算するにはどうすればよいですか。
反復によってプログラムがクラッシュするため、各行を反復せずに行を見つける式が必要だと思います。
2 ^ n
任意の行の数値の合計は、行の場所n
(0 から始まる) に等しくなります。したがって、あなたの場合、それはちょうど1 << 1499
.
あなたの答えは次のとおりです。
17537331055217019373813793980140428996762007940165414412037899012395481925281661101828540443292484630826575203397718758699647274470734979877085519459002350423944978242664548632243401355791731473268341092170069314725677729132473171262691809694657480322332526275875721167754624586680565177898054854942790337156977105108828923716313380366502376637658596066837351781686391648520996613526331666834254976000087526677764529440217091269193357761841856604274688
グーグル検索はウィキから明らかにします:
パスカルの三角形の n 行目のエントリの合計は、2 の n 乗です。
したがって、すべての行を反復するのではなく、2^1500 を計算する必要があります。
パスカル三角形の行合計は1<<n
、n が行番号 (ゼロベース) です。最終値は1<<1499
です。
したがって、プログラムは 1500 ビットの整数を表示する必要があり、これが主な問題になるはずです。バイナリ出力を生成するには、次を使用します
printf("1");
for (int i=1;i<1500;i++) printf("0");
printf("\n");