돌 게임
시간 제한1초메모리 제한512 MB
각 차례에 제거하는 돌의 수가 직전 수의 배수여야 하는 게임에서, 베시가 필승할 수 있는 첫 수의 가짓수를 센다.
문제
Bessie와 Elsie가 ()개의 돌 더미로 게임을 한다. 번째 더미에는 개의 돌이 있다 (, ). 두 소가 번갈아 차례를 가지며, Bessie가 먼저 시작한다.
- 먼저 Bessie가 양의 정수 을 골라 돌이 개 이상 있는 더미에서 돌 개를 가져간다.
- 그다음 Elsie가 이 를 나누는 양의 정수 를 골라 돌이 개 이상 있는 더미에서 돌 개를 가져간다.
- 그다음 Bessie가 가 을 나누는 양의 정수 을 골라 돌이 개 이상 있는 더미에서 돌 개를 가져가고, 이런 식으로 이어진다.
- 일반적으로 번째 차례에 가져가는 돌의 개수 는 을 나누어야 한다.
자기 차례에 돌을 가져가지 못하는 소가 진다.
Bessie가 승리를 보장받기 위해(Elsie가 어떤 선택을 하더라도 Bessie가 이기는 전략이 존재한다는 뜻이다) 첫 차례에 돌을 가져가는 방법의 수를 구하여라. 가져가는 돌의 개수가 다르거나 돌을 가져가는 더미가 다르면 서로 다른 방법으로 본다.
입력
첫째 줄에 이 주어진다.
둘째 줄에 개의 정수 이 공백으로 구분되어 주어진다.
출력
Bessie가 승리를 보장받기 위해 첫 차례에 돌을 가져가는 방법의 수를 출력한다.
이 문제에서 다루는 정수의 크기가 크므로 64비트 정수 자료형(예: C/C++의 "long long")이 필요할 수 있다.