求助
查看原帖
求助
1627385
loatic楼主2024/12/29 11:36
#include<bits/stdc++.h>
using namespace std;
char s[2000];
struct num{
	int x[2000];
	int len;
	void read(){
		cin>>s;
		len=strlen(s);
		reverse(s,s+len);
		for(int i=1;i<=len;i++){
			x[i]=s[i-1]-'0';
		}
	}
	void print(){
		for(int i=len;i>=1;i--){
			cout<<x[i]; 
		}
	}
}a,b,c;
num operator * (num &a,num &b)
{
	num c;
	memset(c.x,0,sizeof c.x);
	c.len=a.len+b.len-1;
	for(int i=1;i<=a.len;i++){
		for(int j=1;j<=b.len;j++){
			c.x[i+j-1]+=a.x[i]*b.x[j];
		}
	}
	for(int i=1;i<=c.len;i++){
		if(c.x[i]>9){
			c.x[i+1]+=c.x[i]/10;
			c.x[i]%=10;
		}
	}
	if(c.x[c.len+1]>0) c.len++;
	while(c.x[c.len]==0&&c.len>1) c.len--;
	return c;
}
num operator + (num &a,num &b)
{
	num c;
	memset(c.x,0,sizeof c.x);
	c.len=a.len+b.len-1;
	for(int i=1;i<=c.len;i++){
		c.x[i]+=a.x[i]+b.x[i];
	}
	for(int i=1;i<=c.len;i++){
		if(c.x[i]>9){
			c.x[i+1]++;
			c.x[i]-=10;
		}
	}
	if(c.x[c.len+1]>0) c.len++;
	return c;
}
int main()
{
	
	return 0;
}

高精度+*已敲出,请问如何进行阶乘求和运算?

2024/12/29 11:36
加载中...