๊ธ ์์ฑ์: caputdraconis
/* BOJ 1074 ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๊ฐ ์๊ฒ๋ ์ ์ ๋ํด ์์ฑํ ๊ธ์
๋๋ค..! */
์ง๊ธ๊น์ง C++์์ ์ด๋ค ์์ n์น ๊ฐ์ ๊ณ์ฐํ๊ณ ์ฌ์ฉํ๊ธฐ ์ํ์ฌ cmath ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋์ด ์๋ pow ํจ์๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, 2์ 12์น์ ๊ตฌํ๊ณ ์ ํ๋ค๋ฉด cmath ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ include ํด์ฃผ๊ณ pow(2, 12) ๊ณผ ๊ฐ์ด ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ๊ตฌํด์ฃผ์ด ์ฌ์ฉํ์ต๋๋ค.
๊ทผ๋ฐ...! ๋นํธ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ ์กฐ๊ธ ๋ ๊ฐ๋จํ๊ฒ ํํํ ์ ์์ต๋๋ค!
์ฌ๊ธฐ์ ๋นํธ ์ฐ์ฐ์(Bitwise operators)๋!?
Operator |
Symbol |
Form |
Operation |
left shift |
<< |
x << y |
all bits in x shifted left y bits |
right shift |
>> |
x >> y |
all bits in x shifted right y bits |
bitwise NOT |
~ |
~x |
all bits in x flipped |
bitwise AND |
& |
x & y |
each bit in x AND each bit in y |
bitwise OR |
| |
x | y |
each bit in x OR each bit in y |
bitwise XOR |
^ |
x ^ y |
each bit in x XOR each bit in y |
์ฌ๊ธฐ์! C++ ์ ๊ธฐํธ๊ฐ ์๋ signed ์ ์์์ ๋นํธ ์กฐ์์ ์ ์ฉ ๋ฐฉ์์ ๋ณด์ฅํ์ง ์์ผ๋ฏ๋ก ๋นํธ ๋จ์ ์ฐ์ฐ์๋ ๋ถํธ๊ฐ ์๋ unsigned ์ ์ ์๋ฃํ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค..!
์ด ๋นํธ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ 2์ n์น ๊ฐ์ ์ด๋ป๊ฒ ํํํ ์ ์์๊น์!?
์๋์ ํํ์ ์ดํด๋ด
์๋น..!
1 << 3
๋นํธ ์ฐ์ฐ์์ ์ค๋ช
์ผ๋ก ๋ณด๋ฉด ์ด ํํ์ 1์ ํํํ๋ ๋ชจ๋ ๋นํธ๋ฅผ ์ผ์ชฝ์ผ๋ก 3์นธ ์์ง์ด๋ผ๋ ๋ป์
๋๋ค.
1์ ํํํ๋ ์ด์ง์๋ 0001์
๋๋ค. ์ด๋ฅผ ์ผ์ชฝ์ผ๋ก 3์นธ ์์ง์ด๊ฒ ๋๋ฉด 1000์ด ๋๋ฉฐ ์ด๋ 8์ ๋ํ๋ด๋ ์ด์ง์์
๋๋ค.
์์ ์์์ ๋ณผ ์ ์๋ฏ์ด 1 >> y ์์ y์ ๋ค์ด๊ฐ๋ ์์ ๋ฐ๋ผ 2์ y์น ๊ฐ์ ๋นํธ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ ๋ํ๋ผ ์ ์๊ฒ ๋ฉ๋๋ค..!
๊ณ ๋ ๋ค๋ฉด,,,
๋ฌด์ฐ๋ฅด์..!