문제
택 이라는 단어를 영어로 키보드로 치면 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