Pagini recente »
Cod sursă (job #195692)
|
Borderou de evaluare (job #312043)
|
Cod sursă (job #130857)
|
simviii
|
Cod sursă (job #339406)
Cod sursă (job
#339406)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bizar.in");
ofstream fout("bizar.out");
int i,k[10000],j,v[100][50000],p[10000];
char a[100000];
int termen()
{
int n=0;
while(a[i]-'0'>=0 && a[i]-'0'<=9)
{
n=n*10+a[i]-'0';
i++;
}
return n;
}
int calcul()
{
while(a[i]!='\0' && a[i]!=')')
{
if(a[i]-'0'>=0 && a[i]-'0'<=9)
{
p[j]++;
v[j][p[j]]=termen();
}
else
{
if(a[i]=='(')
{
j++;
k[j]=v[j-1][p[j-1]];
i++;
v[j-1][p[j-1]]=calcul();
j--;
}
else
{
i++;
}
}
}
if(a[i+1]=='(')
{
i+=2;
k[j]=v[j][k[j]%p[j]];
p[j]=0;
return calcul();
}
else
{
v[j][0]=v[j][p[j]];
return v[j][k[j]%p[j]];
}
}
int main()
{
fin.get(a,100000);
k[0]=a[0]-'0';
i=2;
fout<<calcul();
return 0;
}