mipt 005

没什么好说的。。直接模拟。。
(:加深1层,
):降低1层
数字: 叶子
直接算就OK了。。
注意一下cin.peek()可能会有用,它的作用是读下一个但不删除,
可以用来判断是否是'(‘和’)’。。
#include<cstdio>
#include<utility>
#include<vector>
#include<algorithm>
#include<iostream>
#include<set>
#include<cstdlib>
using namespace std;
double pow[1000];
int main()
{
pow[0]=1;
for(int i=1;i<1000;i++)
pow[i]=pow[i-1]/2;
int cnt=0;double ans=0,x;
while(true)
{
while(cin.peek()==’ ‘)
cin.get();
if(cin.peek()=='(‘)
cnt++,cin.get();
else
{
if(cin.peek()==’)’)
cnt–,cin.get();
else
cin>>x,ans+=x*pow[cnt];
}
if(!cnt) break;
}
cout.setf(ios::fixed);
cout.precision(2);
cout<<ans<<endl;
}

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>