Description
定义一种序列1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,…..,问这个序列第n项
Input
第一行一整数
Output
输出这个序列的第n项
Sample Input
2
1
2
Sample Output
1
2
Solution
前三项固定后,从第三项的2开始,每次相当于在序列末端交替的加1或2,数量等于当前位置的值,预处理前
Code
#include<cstdio>
using namespace std;
#define maxn 10000005
int T,n,a[maxn];
int main()
{
a[1]=1,a[2]=2,a[3]=2;
int res=3,sta=1;
for(int i=3;res<10000000;i++,sta=3-sta)
{
if(a[i]==1)a[++res]=sta;
else a[++res]=sta,a[++res]=sta;
}
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
printf("%d\n",a[n]);
}
return 0;
}