Я новичок ie в c ++. Я попытался задать вопросы, связанные с битовыми наборами (https://www.codechef.com/problems/CHEFQUE), когда я использую следующие вложенные операторы, код проходит все тесты
for(int i=1;i<Q+1;i++){
temp = S/2;
if(S&1){ //odd
if(!sets[temp]){
sets[temp] = true;
sum+=temp;
}
}
else{ //even
if(sets[temp]){
sets[temp] = false;
sum-=temp;
}
}
S = (A*S + B);
Но когда я объединяю несколько if-else утверждений, он терпит неудачу на некоторых тестах
for(int i=1;i<Q+1;i++){
temp = S/2;
if(S&1 && !sets[temp]){ //odd and empty
sets[temp] = true;
sum+=temp;
}
else if(!S&1 && sets[temp]){ //even ond occupied
sets[temp] = false;
sum-=temp;
}
S = (A*S + B);
}
Я действительно понятия не имею, почему это могло произойти, я уверен, что это должно быть действительно глупо. Я был бы очень благодарен, если бы кто-нибудь помог.