輸入一個整數 n (0 < n < 100),輸出帕斯卡三角形。
依序輸出每一行的值並以空白隔開,最後必須換行。
Sample Output:
由於題目要求的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: