Pagini recente »
Cod sursă (job #339222)
Cod sursă (job
#339222)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bizar.in");
ofstream fout("bizar.out");
int i,k[10000],j=0,v[10000][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]];
v[j-1][p[j-1]]=calcul();
j--;
}
else{
i++;
}
}
}
if(a[++i]=='('){
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;
}