20分求解,输入部分有问题
查看原帖
20分求解,输入部分有问题
542881
日常放水WT双奔楼主2021/9/14 19:39

源代码如下,第四个点AC

#include<bits/stdc++.h>
#define _for(i,a,b) for(short i=(a);i<=(b);i++)
using namespace std;

struct _int{
	public:
		short num[501];//始终为倒序 
		short f,dig;
		_int(){
			memset(num,0,sizeof(num));
			f=1;dig=0;
		}
		void read(){
			char ch=getchar();
			if((ch>='0'&&ch<='9')||ch=='-'||ch=='+') read();
			if(ch=='-'||ch=='+'){
				f=(ch=='+')?1:-1;
				return;
			}
			if(ch>='0'&&ch<='9')num[++dig]=ch-'0';
			return;
		}
		void print(){
			if(f==-1) printf("-");
			for(int i=dig;i>=1;i--){
				printf("%d",num[i]);
			}
			return;
		}
		_int operator +(_int add){
			//if(this->f!=add.f)
			_int ans;
			ans.dig=max(this->dig,add.dig);
			short upper=0;
			_for(i,1,ans.dig){
				ans.num[i]=this->num[i]+add.num[i]+upper;
				upper=ans.num[i]/10;
				ans.num[i]%=10;
			}
			if(upper!=0) ans.num[++ans.dig]=upper;
			return ans;
		}
}; 
int main(){
	_int a,b;
	a.read();
	b.read();
	(a+b).print();
}

这个代码在DEV-C++的控制台里应该是AC,但是在洛谷在线IDE里只能读取到第一个数 输入部分在read()里,望大佬点评修改

2021/9/14 19:39
加载中...