数组开的太大了,可以用unordred_set s,记录1的位置
生命以负熵为食 edited 3 年,8 月前
为啥跑不出啊,第一个就跑不出
//11:26-11:40
#include <cstdio>
const int maxn = 1e9;
//int pos[maxn] = {0};
bool isOne[maxn] = {false};
// 1 2 4 7 11
//0+1 1+1 1+2+1 1+2+3+1 1+2+3+4+1
//前0项和 前1项和 前2项和
void init(){
int s = 0;
int i = 0;
while(s < maxn){
s = i * (i + 1) / 2;
i++;
isOne[s + 1] = true;
}
}
int main(){
int n, pos;
scanf("%d", &n);
init();
for(int i = 0; i < n; i++){
scanf("%d", &pos);
if(isOne[pos]){
printf("1\n");
}else{
printf("0\n");
}
}
return 0;
}
好的,谢谢您