QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 256 MB Total points: 100

#3500. COWBASIC

统计

Bessie has invented a new programming language, but since there is no compiler yet, she needs your help to actually run her programs.

COWBASIC is a simple, elegant language. It has two key features: addition and MOO loops. Bessie has devised a clever solution to overflow: all addition is done modulo $10^9+7$. But Bessie's real achievement is the MOO loop, which runs a block of code a fixed number of times. MOO loops and addition can, of course, be nested.

Given a COWBASIC program, please help Bessie determine what number it returns.

Input Format

You are given a COWBASIC program at most 100 lines long, with each line being at most 350 characters long. A COWBASIC program is a list of statements.

There are three types of statements:

<variable> = <expression>

<literal> MOO {
  <list of statements>
}

RETURN <variable>

There are three types of expressions:

<literal>

<variable>

( <expression> ) + ( <expression> )

A literal is a positive integer at most 100,000.

A variable is a string of at most 10 lowercase English letters.

It is guaranteed that no variable will be used or RETURNed before it is defined. It is guaranteed that RETURN will happen exactly once, on the last line of the program.

Output Format

Output a single positive integer, giving the value of the RETURNed variable.

Scoring

  • In 20 percent of all test cases - MOO loops are not nested.
  • In another 20 percent of all test cases - The program only has 1 variable. MOO loops can be nested.
  • In the remaining test cases, there are no further restrictions.

Sample Input 1

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

Sample Output 1

1024

This COWBASIC program computes $2^{10}$.

Sample Input 2

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

Sample Output 2

4761

This COWBASIC program computes $(10^5*10^5+1)^2$ (modulo $10^9 + 7$).

Problem credits: Jonathan Paulson

About Issues

We understand that our problem archive is not perfect. If you find any issues with the problem, including the statement, scoring configuration, time/memory limits, test cases, etc.

You may use this form to submit an issue regarding the problem. A problem moderator will review your issue and proceed it properly.

STOP! Before you submit an issue, please READ the following guidelines:

  1. This is not a place to publish a discussion, editorial, or requests to debug your code. Your issue will only be visible by you and problem moderators. Other users will not be able to view or reply your issues.
  2. Do not submit duplicated issues. If you have already submitted one, please wait for an moderator to review it. Submitting multiple issues will not speed up the review process and might cause your account to be banned.
  3. Issues must be filed in English or Chinese only.
  4. Be sure your issue is related to this problem. If you need to submit an issue regarding another problem, contest, category, etc., you should submit it to the corresponding page.

Active Issues 0

No issues in this category.

Closed/Resolved Issues 0

No issues in this category.