아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

C 언어 반복문

시간 제한1초메모리 제한128 MB

요약
k비트 부호 없는 정수에서 2^k로 나눈 나머지로 증가하는 카운터가 정지 값에 도달하는 반복 횟수를 구하고, 도달하지 못하면 FOREVER를 출력한다.
난이도

보통10점 중 5점

유형
수학, 정수론, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

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

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

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

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

입력

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

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

출력

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

예제1

  1. 예제 1

    입력
    3 3 2 16
    3 7 2 16
    7 3 2 16
    3 4 2 16
    0 0 0 0
    
    예상 출력
    0
    2
    32766
    FOREVER