tictac 立體井字棋
阿新 • • 發佈:2018-12-16
題目描述:
你玩過井字棋遊戲嗎?它的英文名字叫做tic-tac-toe,是一個古老的博弈遊戲。遊戲在一 個3 £ 3的棋盤上進行。遊戲約定,先在同一條線(橫線、縱線或斜線)上佔有3枚棋子者得 勝。儘管現在藉助計算機可以生成這個遊戲所有可能的情況,但這個古老的遊戲從未失去它 在博弈遊戲中的意義。在它的身上不斷可以看到有新的東西產生。比如,有人將井字棋遊戲 從平面空間擴充套件到三維空間,發明了立體井字棋。立體井字棋的棋盤是一個n £ n £ n的立方 體,遊戲雙方在立方體的這n3個格子中布子。與傳統井字棋遊戲的規則相似,首先佔據了一 條線上的全部n個格子的人獲勝。當然,這個立方體的大小是有考究的,並不是所有的正整 數n都合適: n小了獲勝太易,先行者必勝; n大了獲勝又太難,最後可能雙方都無法獲勝。 為此,我們需要收集與該遊戲有關的一些資料,以決定最佳的n的值。我們想知道,對於某 個n,在遊戲中有多少種獲勝的情況。你的任務是確定,在n £ n £ n的立方體中放n個子,有 多少種布子方案可以使這n個子連成一條線。
輸入:
輸入資料為一個正整數n,表示立方體的大小。
輸出:
輸出為一個正整數,它表示在n3的立方體中n個格子連成一條直線的方案數。
資料範圍限制:
對於30%的資料, n<=10; 對於100%的資料, n <= 1000。
思路:
規律題,沒必要講
Code:
# include <algorithm> # include <iostream> # include <cstring> # include <cstdio> # include <cctype> using namespace std; inline int read() { int ret = 0,w = 0; char ch = 0; while(!isdigit(ch)) { w |= ch == '-'; ch = getchar(); } while(isdigit(ch)) { ret = (ret << 3) + (ret << 1) + (ch ^ 48),ch = getchar(); } return w ? -ret : ret; } inline void write(int x) { if(x < 0) putchar('-'),x = -x; if(x > 9) write(x / 10); putchar(x % 10 + '0'); } int main() { freopen("tictac.in","r",stdin); freopen("tictac.out","w",stdout); int n; n = read(); long long sum; sum = ((n + 2) * (n + 2) * (n + 2) - n * n * n) / 2; write(sum); return 0; }