杭電 2067 小兔的棋盤
阿新 • • 發佈:2019-02-02
Problem Description 小兔的叔叔從外面旅遊回來給她帶來了一個禮物,小兔高興地跑回自己的房間,拆開一看是一個棋盤,小兔有所失望。不過沒過幾天發現了棋盤的好玩之處。從起點(0,0)走到終點(n,n)的最短路徑數是C(2n,n),現在小兔又想如果不穿越對角線(但可接觸對角線上的格點),這樣的路徑數有多少?小兔想了很長時間都沒想出來,現在想請你幫助小兔解決這個問題,對於你來說應該不難吧! Input 每次輸入一個數n(1<=n<=35),當n等於-1時結束輸入。 Output 對於每個輸入資料輸出路徑數,具體格式看Sample。 Sample Input 1
3
12
-1
2 3 10
3 12 416024
程式碼實現:
#include <stdio.h> int main(void) { int i, j; __int64 a[36] = {1}; __int64 b[36] = {0}; for (i = 1; i < 36; i++) { for (j = 1; j < i; j++) a[j] += a[j-1]; b[i] = a[i] = a[i-1]; } for (j = 1; scanf("%d", &i), i+1; j++) printf("%d %d %I64d\n",j, i, 2 * b[i]); return 0; }