洛谷1303题 , 60分通过 , 求指点
  • 板块题目总版
  • 楼主zhangzhanrui
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/7/13 22:05
  • 上次更新2023/11/3 10:00:19
查看原帖
洛谷1303题 , 60分通过 , 求指点
1034711
zhangzhanrui楼主2023/7/13 22:05

求帮助

洛谷1303题

A*B Problem 题目描述 给出两个非负整数,求它们的乘积。 输入格式 输入共两行,每行一个非负整数。 输出格式 输出一个非负整数表示乘积。 样例 1 样例输入 1 1 2 样例输出 1 2 提示 每个非负整数不超过 10^2000

我的代码入下

#include <cstring>
using namespace std;
char s[110];
int a[2001], b[2001], c[4050];
int la, lb, lc;
int main() {
    cin >> s;
    la = strlen(s);
    for (int i = 0; i < la; i++)
        a[i] = s[la - i - 1] - '0';
    cin >> s;
    lb = strlen(s);
    for (int i = 0; i < lb; i++)
        b[i] = s[lb - i - 1] - '0';
    lc = 0;
    for (int i = 0; i < 210; i++)
        c[i] = 0;
	for (int i = 0; i < la; i++) {
    	for (int j = 0; j < lb; 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;
			}
   		}
	}
    lc = la + lb;
    if (c[lc] - 1 < 0)
        lc++;
    while (lc > 1 && c[lc - 1] == 0)
        lc--;
    for (int i = lc - 1; i >= 0; i--)
        cout << c[i];
    return 0;
}```
2023/7/13 22:05
加载中...