#include <iostream>
using namespace std;
int f(int x){return (x<<1)-3;}
int g(int x,int y){return (x<<1)+y-7;}
int h(int x,int y,int z){return (x<<1)+x-(y<<1)+z;}
string s;
/*inline int poww(int n){
return n?(poww(n-1)<<3)+(poww(n-1)<<1):1;
}
int tran(string s){
int k=s.size(),i=k-1,sum=0,n=0;
if(s[0]=='-') s.erase(0,0),n=1;
for(;i>=0;--i)
sum+=(s[i]-'0')*poww(k-i-1);
return n?-sum:sum;
}*/
int r(){
cin>>s;
if(s=="f") return f(r());
else if(s=="g") return g(r(),r());
else if(s=="h") return h(r(),r(),r());
else return stoi(s);
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cout<<r();
}
不知道問題出在哪裡
原文吃掉啦
不知道ㄟ,但把他從函數改成直接return答案就會過了
#include <iostream>
using namespace std;
string s;
int r(){
cin>>s;
if(s=="f") return r()*2-3;
else if(s=="g") return r()*2+r()-7;
else if(s=="h") return r()*3-r()*2+r();
else return stoi(s);}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cout<<r();}
會不會是跟溢位有關?