题解 P1795 【无穷的序列_NOI导刊2010提高(05)】
这道题可以直接用数学方法做,每组循环的长度依次+1,所以第n个1前的长度为n(n-1)/2(等差数列求和),第n个1的位置为n(n-1)/2+1
附上代码:
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
int x;//位置
scanf("%d",&x);
x--;//好算点
if(int(sqrt(x*2))*int(sqrt(x*2)+1)==x*2) printf("1\n");//sqrt(n(n-1))位于n与n-1之间
else printf("0\n");
}
return 0;
}