热河路疑问

生命以负熵为食 edited 1 年,3 月前

为啥跑不出啊,第一个就跑不出

//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;
}

Comments

zrjzrjzrj

数组开的太大了,可以用unordred_set s,记录1的位置

生命以负熵为食

好的,谢谢您