안녕하세요. 오늘은 절반으로 쪼갤거예요.
https://www.acmicpc.net/problem/10275
수학적으로 생각해보면 a,b,c에서 b와 c에서의 비트가 다른 개수가 정답이 됩니다. 그래서 a xor b xor c에서의 비트가 1인 개수를 세어주면 됩니다.
#include <iostream>
#include <cmath>
#define ll long long
using namespace std;
ll CNT(ll x)
{
ll cnt = 0;
while (x)
{
cnt += x % 2;
x /= 2;
}
return cnt;
}
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
ll T, a, b, c;
cin >> T;
while (T--)
{
cin >> a >> b >> c;
cout << CNT((ll)(pow(2, a)) ^ b ^ c) << "\n";
}
}
감사합니다.