C 언어 반복문

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

다음과 같은 C 언어 스타일의 for 반복문이 주어진다.

for (variable = A; variable != B; variable += C)
  statement;

이 반복문은 variable을 A로 초기화한 뒤, variable이 B와 같지 않은 동안 statement를 실행하고 variable에 C를 더하는 과정을 반복한다. 모든 연산은 $k$비트 부호 없는 정수 자료형에서 $2^k$을 법으로 하여(즉 $0 \le x < 2^k$ 범위에서 $2^k$으로 나눈 나머지로) 계산된다.

주어진 $A$, $B$, $C$, $k$에 대해 statement가 몇 번 실행되는지 구하여라. 반복문이 종료되지 않는다면 대신 FOREVER를 출력한다.

입력

입력은 여러 개의 인스턴스로 이루어진다. 각 인스턴스는 공백 하나로 구분된 네 정수 $A$, $B$, $C$, $k$가 적힌 한 줄로 주어진다. $k$ ($1 \le k \le 32$)는 반복 제어 변수의 비트 수이고, $A$, $B$, $C$ ($0 \le A, B, C < 2^k$)는 반복문의 매개변수이다.

입력의 마지막 줄에는 네 개의 0이 주어지며, 이 줄은 처리하지 않는다.

출력

각 인스턴스에 대해 한 줄씩 출력한다. $i$번째 줄에는 $i$번째 인스턴스에서 statement가 실행되는 횟수(정수 하나)를 출력하고, 반복문이 종료되지 않으면 FOREVER를 출력한다.