Gcy114514 @ 2023-05-27 15:46:48
只有两个点AC有一个点RE,没有TLE
#include <bits/stdc++.h>
using namespace std;
string a;
int s[11451419],k,sum=0;
int main()
{
cin>>a;
for(int i=0;i<a.length()-1;i++){
if(a[i]!='+'&&a[i]!='-'&&a[i]!='*'&&a[i]!='/'&&a[i]!='.'){
k++;
if(a[i+1]!='+'&&a[i+1]!='-'&&a[i+1]!='*'&&a[i+1]!='/'&&a[i+1]!='.'){
s[k]=(a[i]-'0')*10+(a[i+1]-'0');
i++;
}
else
s[k]=a[i]-'0';
}
else{
if(a[i]!='.'){
if(a[i]=='+'){
s[k-1]=(s[k]+s[k-1]);
k--;
}
if(a[i]=='-'){
s[k-1]=(s[k-1]-s[k]);
k--;
}
if(a[i]=='*'){
s[k-1]=(s[k-1]*s[k]);
k--;
}
if(a[i]=='/'){
s[k-1]=(s[k-1]/s[k]);
k--;
}
}
}
}
cout<<s[k];
return 0;
}
by normalpcer @ 2023-07-07 10:27:13
你这个数字超过两位就不行了,像这样:
输入
100.200.+@
预期输出
300
实际输出
20
by Orange0628 @ 2023-09-03 15:59:02
代码发送^_^
#include <bits/stdc++.h>
using namespace std;
int st[1005],top,n;
int num;
int main()
{
string s;
cin>>s;
n=s.length();
for(int i=0;i<n-1;i++)
{
if(s[i]>='0'&&s[i]<='9')
num=num*10+s[i]-'0';
if(s[i]=='.')
{
st[++top]=num;
num=0;
}
if(s[i]=='+')
{
st[top-1]+=st[top];
top--;
}
if(s[i]=='-')
{
st[top-1]-=st[top];
top--;
}
if(s[i]=='*')
{
st[top-1]*=st[top];
top--;
}
if(s[i]=='/')
{
st[top-1]/=st[top];
top--;
}
}
cout<<st[top];
return 0;
}
那就: