๐ ๋ฐฐ๊ณ ํ(Easy)
https://www.acmicpc.net/problem/28239
๐ ๋ฌธ์ ์์ฝ
์ฃผ์ด์ง ์์ ์ ์ m์ ๋ํด 2^x + 2^y = $์ธ ์์ด ์๋ ์ ์ x์ y๋ฅผ ์ฐพ์ ๋ค ๋ฉ๋ดํ์ (x,y) ์์น์ ์ ํ ๋ฉ๋ด๋ฅผ ๊ณ ๋ฅธ๋ค. ๋จ, x <= y์ธ ๊ฒฝ์ฐ๋ง ๋ค๋ฃฌ๋ค.
์ ๋ ฅ: ์ฒซ ๋ฒ์งธ ์ค์ ๋ฉ๋ด์ ์ n์ด ์ฃผ์ด์ง๋ค ์ด์ด์ n๊ฐ์ ๊ฐ ์ค์ ๋ฉ๋ด๋ฅผ ๊ณ ๋ฅผ ๋ ์ฌ์ฉํ ์์ ์ ์ m์ด ํ๋์ฉ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ: n๊ฐ์ ์ค์ ๊ฐ๊ฐ ์ฃผ๋ฌธํ ๋ฉ๋ด์ ์์น (x,y)์ x, y๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํ๋ค.
๐ก ์ ๊ทผ ๋ฐฉ๋ฒ
๋ฌธ์ ์์ ์๊ตฌํ๋๊ฒ์ด 2์ ์ ๊ณฑ์์ ์์๋ด๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ด์ง์ ๋นํธ ๊ฐ์ ํ์ฉํด ๋ฌธ์ ๋ฅผ ํ์ด๋๊ฐ๊ธฐ๋ก ํ๋ค.
m๊ฐ์ ์ ํ์ด int ๋ฒ์๋ฅผ ๋์ด long long์ผ๋ก ์ ์ธํด์ฃผ๊ณ , ๋นํธ๊ฐ ๋ํ ๊ฐ์ ์๋ฃํ์ผ๋ก ์ ์ธํ์ฌ
๋นํธ ์๋ฆฟ์๋ง๋ค ํ์ธํด ์์ ์๋ฆฟ๊ฐ๋ถํฐ ์ถ๋ ฅํด์ค๋ค.
โ ๏ธ ์ฒ์์ ํ๋ ์ค์
์๋ฃํ์ m๊ฐ์๋ง ์ ์ฉํ์ฌ ๋นํธ ๊ฐ ๊ณ์ฐํ๋ ๋ถ๋ถ์์ ์๋ฃํ ์๋ฌ๊ฐ ๋ฌ์๋ค.
๋นํธ ๊ณ์ฐํ๋ c ๊ฐ์๋ ์๋ฃํ์ ์ ์ฉํ ๋ค ์๋ฌ๊ฐ ์๋ฌ๋ค.
๐ป ์ฝ๋
#include <iostream>
using namespace std;
long long n, m;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
for(int i = 0; i < n; ++i)
{
cin >> m;
long long c=1;
for(int j = 0; j < 64; ++j)
{
if((c << j) == m)
{
cout << j - 1 << ' ' << j - 1;
}
else if((c << j) & m)
{
cout << j << ' ';
}
}
cout << '\n';
}
return 0;
}