ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ณต๋ถ/C++
๋ฐฑ์ค 3460๋ฒ : ์ด์ง์ with C++
์ฐ์ด14
2023. 2. 25. 15:26
๋ฌธ์
์์ ์ ์ n์ด ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ์ด์ง์๋ก ๋ํ๋์ ๋ 1์ ์์น๋ฅผ ๋ชจ๋ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ตํ์ ๋นํธ(least significant bit, lsb)์ ์์น๋ 0์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , n์ด ์ฃผ์ด์ง๋ค. (1 ≤ T ≤ 10, 1 ≤ n ≤ 106)
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด์, 1์ ์์น๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ค ํ๋์ ์ถ๋ ฅํ๋ค. ์์น๊ฐ ๋ฎ์ ๊ฒ๋ถํฐ ์ถ๋ ฅํ๋ค.
๊ตฌํ ๋ฐฉ๋ฒ
10์ง์๋ฅผ 2์ง์ ๋ฐฐ์ด๋ก ๋ณํํ๋ ํจ์๋ฅผ ๋ง๋ค์ด ๋ณํํ ๋ค,
2์ง์ ๋ฐฐ์ด์์ 1์ด ๋ค์ด๊ฐ ์๋ฆฌ์๋ค์ ์ถ๋ ฅํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์๋ค.
#include <iostream>
using namespace std;
int deci_bi(int N, int* bi); // 10์ง์ 2์ง์๋ก ๋ณํ
int main() {
int T, num[11];
cin >> T; // ํ
์คํธ ์
for (int i = 0; i < T; i++) {
cin >> num[i]; // ์ซ์ ์
๋ ฅ๋ฐ๊ธฐ
}
for (int i = 0; i < T; i++) {
int bi[21] = { 0, }; // 2์ง์ ์
๋ ฅ ์ด๊ธฐํ
int end = deci_bi(num[i], bi); // 10์ง์ 2์ง์๋ก ๋ณํ
for (int j = 0; j < end; j++) {
if (bi[j] == 1) { // 2์ง์ ์๋ฆฟ๊ฐ์ด 1์ธ ์๋ฆฟ์ ์ถ๋ ฅ
cout << j << " ";
}
}
cout << "\n";
}
return 0;
}
int deci_bi(int N, int* bi) { // 10์ง์ 2์ง์๋ก ๋ณํ
int temp = N, i = 0;
while (temp > 0) {
if (temp % 2 == 1) {
bi[i] = 1;
}
temp = (temp - (temp % 2)) / 2;
i++;
}
return i;
}