페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#3093

Xor과 합 1s 128MB

문제

택 이라는 단어를 영어로 키보드로 치면 xor이다. 같은 방식으로 뇌 라는 단어를 영어로 타이핑하면 shl가 된다. 

그래서 여러분이 비트 연산과 친해졌으면 좋겠다고 생각한 ‘택’쌤은 

xor (^)연산과 shl(<<)연산을 가지고 여러분들의 ‘뇌’ 회전을 도와주기로 했다. 

그래서 택쌤은 당신에게 다음과 같은 과제를 주었다. 2진수 a와 b를 주었을 때, 

아래 수식의 결과값을 10억7로 나눈 나머지를 구하라.

 

 

위 수식을 보자마자 문제를 닫지는 말기 바란다.  택쌤이 친절히 저 수식의 다른 버전을 써 주겠다. 

참고로 지금부터 나오는 ^과 << 는 C언어 기준이므로, 다른 언어로 코딩하는 분들은 맞는 것을 찾아 쓰면 될 것이다.

 

(a^b) + (a^(b << 1)) + (a^(b << 2)) + (a^(b << 3)) + …. + (a^(b << 314159))

 

xor(^)는 exclusive OR 연산자의 약자이다. shl(<<)는 shift to the left의 약자이다. 

두 연산은 비트연산으로써, xor 연산은 두 비트가 다르면 1이 되고, 같으면 0이 되는 연산이고, 

x << y 연산은 x의 오른쪽에 y개의 0비트를 추가하라는 뜻이다. 

여러분들이 원장님, 부원장님이나 조교들에게 같은 질문을 여러 번 하는 것을 방지하기 위해 

맨 밑에 비트 연산 관련 추가 설명을 하겠다. 

 


입력

첫째 줄에 a, 둘째 줄에 b가 입력 된다. 두 수는 2진수로 입력되며, a와 b는 최대 2진수 100,000자리 이하이다.

출력

수식의 결과값을 10진수 정수로, 1,000,000,007로 나눈 나머지를 출력하라

예제

10

1010
489429555


출처

Hackerrank – Medium Level, 2018camp contest1 problemD
로그인해야 코드를 작성할 수 있어요.