帕斯卡三角形

輸入一個整數 n (0 < n < 100),輸出帕斯卡三角形。
依序輸出每一行的值並以空白隔開,最後必須換行。

Sample Input:

4

Sample Output:

1
1 1
1 2 1
1 3 3 1

由於題目要求的n範圍使用32位元的整數都是不夠用的,為了讓n到99時仍是正確的數值,必須使用uint64_t
原本想偷懶用double,因double只有52位元mantissa,雖然這次ITSA連線測試題目測資沒有遇到問題,但超過16位數一定吃土(見下圖右),用uint64_t的話就有滿滿的64位可充分使用,n輸入99都沒問題(下圖左)。

pascal.c
#include <stdio.h>
#include <inttypes.h>

int main()
{
int n, i, j;
uint64_t pascal[100] = {0, 1, 0};
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
for (j = i; j >= 1; j--)
pascal[j] = pascal[j - 1] + pascal[j];
for (j = 1; j <= i - 1; j++)
printf("%" PRIu64 " ", pascal[j]);
printf("%" PRIu64 "\n", pascal[j]);
}
return 0;
}

Reference: