立体井字棋
一个升级版的三子棋(我的三子棋 )
立体
N
N
N子棋,输入
N
N
N,输出有多少种摆法使
n
n
n个子连成一线
样例输入
2
样例输出
28
思路
如果把每一条直线向外延伸,然后在每一条延长线の两边各加上一个立方体(就代表两个立方体代表一条直线),那么额外加的立方体就直接把之前边长为
n
n
nの立方体包围了起来,就代表只要求出
(
n
+
2
)
(n+2)
(n+2)の立方体的表面方块有多少个再除以
2
2
2就行了
中间块为
n
2
∗
6
n^2*6
n2∗6
棱块为
n
∗
12
n*12
n∗12
角块为
8
8
8
加起来除以
2
2
2就是我们要的答案
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int main()
{
freopen("tictac.in","r",stdin);
freopen("tictac.out","w",stdout);
scanf("%d",&n);
if(n!=1)printf("%d",(n*n*6+n*12+8)/2);
//也可以是((n+2)*(n+2)*(n+2)-n*n*n)/2
else printf("0");//特判1,但是不知道是输出0还是1,因为在OJ上没有数据是1的
fclose(stdin);
fclose(stdout);
return 0;
}