4

我一直在尝试在 C++ 中计算帕斯卡三角形中的第 1500 行。

我尝试了来自整个网络的超过 6 个不同的代码片段。

他们中的一些人在第 10 排之前坠毁,一些人发疯了等等。

如何计算帕斯卡三角形中第 1500 行的数字总数。

我认为必须有一个公式来找到一行而不迭代每一行,因为迭代会导致程序崩溃。

4

3 回答 3

4

任何行中的数字之和等于行的2 ^ n位置n(从 0 开始)。所以在你的情况下,它只是1 << 1499.

在此处输入图像描述

您的回答如下:

17537331055217019373813793980140428996762007940165414412037899012395481925281661101828540443292484630826575203397718758699647274470734979877085519459002350423944978242664548632243401355791731473268341092170069314725677729132473171262691809694657480322332526275875721167754624586680565177898054854942790337156977105108828923716313380366502376637658596066837351781686391648520996613526331666834254976000087526677764529440217091269193357761841856604274688

于 2012-09-29T13:35:01.520 回答
3

谷歌搜索从 wiki 显示:

帕斯卡三角形第 n 行的元素之和是 2 的 n 次方。

因此,您必须计算 2^1500 而不是尝试遍历所有行。

于 2012-09-29T13:34:25.477 回答
1

帕斯卡三角形的行和是1<<nn 是行号(从零开始)。您的最终值为1<<1499.

所以你的程序需要显示一个 1500 位的整数,这应该是主要问题。要产生二进制输出,请使用

printf("1"); 
for (int i=1;i<1500;i++) printf("0");
printf("\n");
于 2012-09-29T13:35:03.510 回答