提交记录 12325


用户 题目 状态 得分 用时 内存 语言 代码长度
lbb1993 1004a. 【模板题】高精度乘法2 Accepted 100 56.927 ms 248 KB C++ 866 B
提交时间 评测时间
2020-03-22 15:39:24 2020-08-01 02:53:59
#include<iostream>
#include<string>
#include <algorithm>
using namespace std;



int main(){
	
	string k, g;
	cin>>k>>g;
	//int数组各个值初始化为0,c中存放计算结果。
	int a[10100]={0}, b[10001]={0}, c[20200]={0};
	
	int la = k.size(),lb = g.size();
	//两个大数相乘最大位数是sizea+sizeb
	int len = la+lb;
	
	int i,j;
	//字符串变量逆序转成int数组,可以简化大部分字符和数字转换细节。
	for(i=0,j=la-1;j>=0;j--,i++){
		a[i] = k[j]-'0';
	}
	for(i=0,j=lb-1;j>=0;j--,i++){
		b[i] = g[j]-'0';
	}
	
	
	for(i=0;i<la;i++){
		for(j =0;j<lb;j++){
			c[i+j] +=a[i]*b[j];
/*
			c[i+j+1] +=c[i+j]/10;
			c[i+j] = c[i+j]%10;*/
		}
	}	
	
	for(i=0;i<len;i++){
		if(c[i]>=10){
			c[i+1] +=c[i]/10;
			c[i] = c[i]%10;
			
		}
		
		
	}
	

	
//找到c数组中第一个不为零的位置,逆序输出就是和的值
	int m = len;
	while(m>=0&&c[m]==0)m--;
	
	//c数组中数据全部是0,
	if(m<0){
		cout<<"0"<<endl;
		return 0;
	}
	
	for(i=m;i>=0;i--){
		cout<<c[i];		
		
	}
	cout<<endl;
	
	
	return 0;
	
}


CompilationN/AN/ACompile OKScore: N/A

Testcase #156.927 ms248 KBAcceptedScore: 100


Judge Duck Online | 评测鸭在线
Server Time: 2024-10-05 10:25:13 | Loaded in 0 ms | Server Status
个人娱乐项目,仅供学习交流使用