题意:
一个机器人站在无限二维平面的原点。机器人每秒精确移动四个主要方向之一:北、南、西和东。第一步,机器人可以选择四个方向中的任何一个,但在每一秒结束时,它必须相对于它刚刚移动的方向向左或向右转90 度。例如,如果机器人刚刚移动向北或向南,下一步必须向西或向东,反之亦然。
机器人准确地根据上面的规则从它的起始位置开始。机器人最终可以到达多少个不同的点?可以忽略机器人的最终方向。
题解:
n=1: 4 2*2
010
101
010
n=2: 4 2*2
101
000
101
n=3: 12 (2+4)*2
01010
10101
01010
10101
01010
n=4: 9 3*3
10101
00000
10101
00000
10101
n=5: 24 (2+4+6)*2 从左上到右下依次为 2 4 6 6 4 2
0101010
1010101
0101010
1010101
0101010
1010101
0101010
推出规律:当n是奇数时 1 3 5 为 2*2,6*2,12*2,是2+4+6....*2组成,当n为数就是简单的平方
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int ans = 0;
if (n & 1)
{
n = (n + 1) / 2;
ans = (n + 1) * n ;
ans *= 2;
}
else
{
n = n / 2 + 1;
ans = n * n;
}
cout << ans << endl;
}