传送门 点我
推销 点我
题意
很明白了吧。
就是注意一点,骑士的走路方式是和马一样的。
你就可以理解为是国际象棋中的那个马。没错就是这样。
思路
这么好的题为啥没人写捏?
首先,我们先画一张棋盘,模拟一下前几次的情况。
其中红色是初始位置,紫色是第一次的扩张变化,黄色是第二次的,绿色是第三次的,蓝色是第四次的,深橙色是第五次的,淡澄色是第六次的。 (当然,是可以跳来跳去的,所以结论应该是当前棋盘上所有有颜色的黑块)
设当前是 次,那么我们会找到这么几个规律:
- 当 为奇数时,结果定为 。
- 当 为 时,结果为 。
- 当 为 时,结果为 。
- 当 为其他偶数时,结果为
接下来我会为大家解释为什么会有第四种的那个式子。
我们假设当前的棋盘为上图,以最大的为例,会发现它是一个八边形。
我们考虑把这个八边形的左下、右下、左上、右上四个角补全,通过周期就可以简单地求出当前补全后的图形中有多少个黑块了。
然后考虑多余的四个角,不难发现,四个角上,每个角的黑块个数就是,转换得,也就是一共有 个黑块被多算了。
Code
#include<bits/stdc++.h>
using namespace std;
int t,n;
int main(){
scanf("%d",&t);
while(t--){
scanf("%d",&n);
if(n&1){
printf("0\n");
continue;
}
if(n==0){
printf("1\n");
continue;
}
if(n==2){
printf("33\n");
continue;
}
printf("%lld\n",1ll*(1ll*(n*2+n*2+1)*(n*2)+1ll*(n*2+1)-1ll*(n/2)*(n/2)*4));
}
return 0;
}