求助……
  • 板块P1303 A*B Problem
  • 楼主Benny_Li
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/10/27 11:23
  • 上次更新2023/10/27 05:39:37
查看原帖
求助……
533372
Benny_Li楼主2022/10/27 11:23
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
class number{
	public:
		int length,real[2000];
		number(){
			memset(real,0,sizeof(real)),length=0;
		}
		void read(const char *str){
			memset(real,0,sizeof(real));
			length=strlen(str);
			for(int i=0;i<length;++i){
				real[i]=str[length-i-1]-'0';
			}
		}
		void print(){
			for(int i=0;i<length;++i){
				printf("%c",real[length-i-1]+'0');
			}
		}
		string to_str(){
			string res;
			for(int i=0;i<length;++i){
				res=(char)(real[i]+'0')+res;
			}
			return res;
		}
	protected:
		friend number operator+(number x,number y){
			number res;
			res.length=max(x.length,y.length)+1;
			for(int i=0;i<res.length;++i){
				res.real[i]+=x.real[i]+y.real[i];
				res.real[i+1]+=res.real[i]/10;
				res.real[i]%=10;
			}
			while(!res.real[res.length-1]&&res.length-1)--res.length;
			return res;
		}
		friend number operator*(number x,number y){
			number res;
			res.length=x.length+y.length;
			for(int i=0;i<x.length;++i){
				for(int j=0;j<y.length;++j){
					res.real[i+j]+=x.real[i]*y.real[j];
					res.real[i+j+1]+=(res.real[i+j]/10);
					res.real[i+j]%=10;
				}
			} 
			while(!res.real[res.length-1]&&res.length-1)--res.length;
			return res;
		}
}; 
number a,b;
char str[2000];
int main(){
	scanf("%s",&str);
	a.read(str);
	scanf("%s",&str);
	b.read(str);
	printf("%s",(a*b).to_str().c_str());
	return 0; 
}

最后一个点WA了……

2022/10/27 11:23
加载中...