上代码!

/*计算机
  有加,减,乘,除,幂次
  不能打括号
  求括号打法*/
#include <bits/stdc++.h>
using namespace std;
//快速幂
long long power(long long a,long long b){
	long long ans=1,sum=1;
	while(b!=0){
		sum*=a;
		if(b%2==1){
			ans*=sum;
		}
		b/=2;
	}
	return ans;
}
int main() {
	string s;
	while(cin>>s){
		if(s=="over"){
			break;
		}
		long long fuhao=0,ans=0,sum=0;
		for(long long i=0;i<s.size();++i){
			if(isdigit(s[i])){
				sum=sum*10+s[i]-'0';
				if(i==s.size()-1){
					if(fuhao==0){
						ans+=sum;
					}else if(fuhao==1){
						ans-=sum;
					}else if(fuhao==2){
						ans*=sum;
					}else if(fuhao==3){
						ans/=sum;
					}else{
						ans=power(ans,sum);
					}
				}
			}else{
				if(fuhao==0){
					ans+=sum;
				}else if(fuhao==1){
					ans-=sum;
				}else if(fuhao==2){
					ans*=sum;
				}else if(fuhao==3){
					ans/=sum;
				}else{
					ans=power(ans,sum);
				}
				if(s[i]=='+'){
					fuhao=0;
				}else if(s[i]=='-'){
					fuhao=1;
				}else if(s[i]=='*'){
					fuhao=2;
				}else if(s[i]=='/'){
					fuhao=3;
				}else{
					fuhao=4;
				}
				sum=0;
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}

0 条评论

目前还没有评论...