#347
Diamond III
프로그래밍 언어 COWBASIC
원문: English
시간 제한
2s
메모리 제한
1024MB
제출
0
정답
0
맞힌 사람
0
정답 비율
0.0%

문제

정현이는 새로운 프로그래밍 언어인 COWBASIC을 개발했다. 아직 컴파일러가 없는 정현이를 위해 이 언어로 작성된 프로그램을 실제로 실행해 주는 프로그램을 작성하자.

COWBASIC은 간단하고 우아한 언어이다. 이 언어는 두 가지 핵심 기능을 가진다. 첫 번째는 덧셈이며, 모든 덧셈은 오버플로를 방지하기 위해 109+710^9+7로 나눈 나머지를 취한다. 두 번째는 MOO 루프로, 코드 블록을 정해진 횟수만큼 반복하여 실행한다. MOO 루프와 덧셈은 당연히 서로 중첩될 수 있다.

COWBASIC 프로그램이 주어질 때, 프로그램이 반환하는 값을 구하는 프로그램을 작성하시오.

입력

최대 100100줄로 구성된 COWBASIC 프로그램이 주어진다. 각 줄의 길이는 최대 350350자이다. 프로그램은 문장(statement)의 목록으로 이루어진다.

문장의 종류는 다음 세 가지이다:

<variable> = <expression>

<literal> MOO {
  <list of statements>
}

RETURN <variable>

수식(expression)의 종류는 다음 세 가지이다:

<literal>

<variable>

( <expression> ) + ( <expression> )

리터럴(literal)은 100000100\,000 이하의 양의 정수이다.

변수(variable)는 최대 1010자의 영문 소문자로 이루어진 문자열이다.

모든 변수는 정의되기 전에는 사용되거나 RETURN되지 않는다. RETURN 문은 프로그램의 마지막 줄에서 정확히 한 번 등장한다.

출력

RETURN되는 변수의 값을 출력한다.

예제 입력 1

x = 1
10 MOO {
  x = ( x ) + ( x )
}
RETURN x

예제 출력 1

1024

예제 입력 2

n = 1
nsq = 1
100000 MOO {
  100000 MOO {
    nsq = ( nsq ) + ( ( n ) + ( ( n ) + ( 1 ) ) )
    n = ( n ) + ( 1 )
  }
}
RETURN nsq

예제 출력 2

4761

제한

  • 전체 테스트 케이스의 20%: MOO 루프가 중첩되지 않는다.
  • 추가 20%: 프로그램에 변수가 단 하나만 존재한다. MOO 루프는 중첩될 수 있다.
  • 나머지: 추가 제약 조건이 없다.
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출
제출 내역이 없습니다.
맞은 사람
아직 맞은 사람이 없습니다.
난이도 투표
Diamond III1명 투표· 약 1개월 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
제출 내역이 없습니다.