咖啡


私信TA

用户名:Tianxn

访问量:138101

签 名:

十年OI一场空,不开LL见祖宗。

等  级
排  名 10
经  验 27291
参赛次数 10
文章发表 197
年  龄 22
在职情况 学生
学  校 西安电子科技大学
专  业 软件工程

  自我简介:

解题思路


注意事项:

参考代码:

#include <iostream>
#include <cstring>
using namespace std;
const int RN = 5e5 + 10;
char stra[RN], strb[RN];
int numa[RN], numb[RN], numc[RN];
 
int main() {
	cin >> stra >> strb;
	numa[0] = strlen(stra), numb[0] = strlen(strb);
	for (int i = 1; i <= numa[0]; ++i) numa[i] = stra[numa[0] - i] - '0'; // 逆序反转 
	for (int i = 1; i <= numb[0]; ++i) numb[i] = strb[numb[0] - i] - '0'; // 逆序反转
	for (int i = 1; i <= numa[0]; ++i)
		for (int j = 1; j <= numb[0]; ++j) 
			numc[i + j - 1] += numa[i] * numb[j];
	int len = numa[0] + numb[0];
	for (int i = 1; i < len; ++i)  // 进位 
		numc[i + 1] += numc[i] / 10, numc[i] = numc[i] % 10;
	while (numc[len] == 0 && len > 1) len--; // 判断位数(排除前导0,但是注意结果为0的时候) 
	for (int i = len; i > 0; --i) cout << numc[i];
	return 0;
}


 

0.0分

39 人评分

  评论区

  • «
  • »