数字多了就错吗?某蒟蒻的WA
查看原帖
数字多了就错吗?某蒟蒻的WA
682971
Nikono1楼主2022/8/26 16:22
#include<bits/stdc++.h>
using namespace std;
long a[60000],k,ans;
int main(){
	char c[60000];
	string s;
	cin>>s;
	for(int i=0;i<s.size();i++){
		if(s[i]>'0'&&s[i]<'9'){
			a[k]=a[k]*10+s[i]-'0';
		}
		if(!(s[i]>'0'&&s[i]<'9')){
			k++;
			c[k]=s[i];
		}
	}
	ans=a[0];
	for(int i=1;i<=k;i++){
		if(c[i]=='+'){
			ans+=a[i];
		}
		if(c[i]=='-'){
			ans-=a[i];
		}
	}
	cout<<ans;
	return 0;
}

思路: ans作为输出,a[]数组存放转化过来的数字,c[]数组存放加减号,正好对应起来最后一个遍历计算出来。

以上是代码,在本地编辑器上发现计算小数,大数都是正确的,但是呢,想本题的庞大数据量,即使复制下来沾到输入终端,最终计算就错了,我不是很明白为什么。是我的代码效率低?还是我方法不对。求解答

2022/8/26 16:22
加载中...