#include <iostream>
using namespace std;
int main(){
long long a;
int n, bits[64]={0}, i=0;
cin>>a>>n;
while(a!=0){
if(a%2==0)
a/=2;
else {
bits[i]=1;
a=(a-1)/2;
}
i++;
}
cout<<bits[n-1];
}
Я обнаружил несколько недочетов в условии. Во-первых, вызвало недоумение то, что сначала номер бита обозначен n, тогда как в диапазоне его значений используется уже буква b. Ладно, допустим, обычная опечатка. Во-вторых, для записи максимально возможного числа 10¹⁸ в двоичной системе потребуется 60 цифр, но здесь утверждается, что спросят не дальше 32 бита. Тогда зачем предусматривать столь большие a? В-третьих, только из примеров стало понятно, что биты нумеруются справа налево
#include<iostream>
using namespace std;
int main(){
int N, min_index=1001;
long droids[1001]={0}, min=2000000001, pre_min=2000000001;
cin>>N;
for(int i=0; i<N; i++)
cin>>droids[i];
for(int i=0; i<N; i++)
if(droids[i]<min) {
min = droids[i];
min_index = i;
}
droids[min_index]=2000000001;
for (int i=0; i<N; i++)
if(droids[i]<pre_min)
pre_min=droids[i];
cout<<min<<" "<<pre_min;
}
после упрощения получим:
F2=A&¬Cv¬A&B&C