#include <bits/stdc++.h>
using namespace std;
//计算 123*123 
int a[3]={3,2,1};//数组里反着存放,这样从下标0开始操作 方便 
int b[3]={3,2,1};
int c[10]={0};//存储答案 

int pr(){//输出C数组里数值 
	for(int i=0;i<10;i++){
		cout<<c[i]<<" ";
	}
	cout<<endl;
}
int main() {
	for(int i=0;i<3;i++){//a[i]
		for(int j=0;j<3;j++){//b[j]
			//高精度核心在这 思考: a[i]*b[j] 应该放到C的哪个位置,为什么是i+j位置? 
			c[i+j]+=a[i]*b[j];//+= 
			if(c[i+j]>=10){
				c[i+j+1]+=c[i+j]/10;//+= 
				c[i+j]%=10;
			}
			pr();//输出计算过程 
		}
		cout<<"-----"<<endl;
	}
	pr();
	cout<<123*123<<endl;//验证答案 
	return 0;
}

更多推荐