Blue Bridge Cup - Multiplication of Large Numbers

The range of C/C++ numbers has an upper limit, if you want to represent 100! This kind of large number must be represented by an array. The principle of arrays representing large numbers is handwritten addition/multiplication, which simulates hand calculations for carry.

  • template
vector<int> a(100,0);
void merge(){
    
    
	//初始化num为结果 
	vector<long long int> num(100,0);
	num[0]=1;
	//初始化有效长度为1 
	int length=1;
	//初始化进位 
	int carry=0;
	//大数累乘 
	for(int i=0;i<a.size();i++){
    
    
		for(int j=0;j<length;j++){
    
    
			long long int temp=num[j]*a[i]+carry;
			//本位的数字
			num[j]=temp%10;
			//下一位的进位
			carry=temp/10;
			//判断下一位是否进位 
			if(carry>0&&j==length-1)	length++;
		} 
	}
	for(int i=length-1;i>=0;i--){
    
    
		//从高位到低位输出
		cout<<num[i]; 
	} 
}
int main(){
    
    
	for(int i=0;i<100;i++){
    
    
		a[i]=i+1;
	}
	merge();
}

Guess you like

Origin blog.csdn.net/qq_33880925/article/details/129860133
Recommended