Submission #2337434


Source Code Expand

#include<bits/stdc++.h>
 
using namespace std;
 
const int mod = 1e9 + 7;
 
int expr();
 
string S;
int idx;
 
int number()
{
  int ret = 0;
  while(idx < S.size() && isdigit(S[idx])) {
    ret = ret * 10 + S[idx++] - '0';
  }
  return (ret);
}
 
int term()
{
  if(isdigit(S[idx])) return (number());
  idx += 2;
  auto ret = expr();
  ret = 1LL * ret * ret % mod;
  idx++;
  return (ret);
}
 
int expr()
{
  auto ret = term();
  int buff = idx;
  while(buff + 1 < S.size() && S[buff] == '>' && S[buff + 1] == '>') {
    buff += 2;
    if(buff >= S.size() || S[buff] == '>') break;
    idx += 2;
    auto get = term();
    for(int i = 0; i < get && ret > 0; i++) ret >>= 1;
    buff = idx;
  }
  return (ret);
}
 
int main()
{
  string T;
  while(getline(cin, T), T != "#") {
    idx = 0;
    S = "";
    for(int i = 0; i < T.size(); i++) if(T[i] != ' ') S += T[i];
    cout << expr() << endl;
  }
}

Submission Info

Submission Time
Task F - Shipura
User ei13333
Language C++14 (GCC 5.4.1)
Score 100
Code Size 953 Byte
Status AC
Exec Time 78 ms
Memory 2688 KB

Judge Result

Set Name all
Score / Max Score 100 / 100
Status
AC × 1
Set Name Test Cases
all Merged
Case Name Status Exec Time Memory
Merged AC 78 ms 2688 KB