提交记录 18070


用户 题目 状态 得分 用时 内存 语言 代码长度
oliviangel 1004a. 【模板题】高精度乘法2 Runtime Error 0 175.25 us 36 KB C++ 1.37 KB
提交时间 评测时间
2022-10-07 13:46:40 2022-10-07 13:46:42
#include<iostream>
#include<string>
#include<cstring>
using namespace std;

int result[10001];
void multiply(string ptr1, string ptr2) {
	int temp1 = ptr1.size();
	int temp2 = ptr2.size();
	for (int i = 0; i <temp1; i++) {
		char temp3 = ptr1[i];
		int temp4 = int(temp3-'0');
		for (int j = 0; j <temp2; j++) {
			char temp5 = ptr2[j];
			int temp6 = int(temp5-'0');
			int index = temp1 - i - 1 + temp2 - j - 1;
			result[index] += temp4 * temp6;                                          
		}
	}
}
void print(int s) {
	for (int i = 0; i <= s + 8; i++) {
		if (result[i] == 0)break;
		int temp = result[i] / 10;
		int k = i;
		while (temp != 0) {
			k++;
			result[k] += temp % 10;
			temp /= 10;
		}
		result[i] = result[i]%10;
	}
	int start = 0;
	for (int i = s + 8; i >= s; i--) {
		if (result[i] != 0) {
			start = i;
			break;
		}
	}
	for (int i = start; i >= 0; i--) {
		cout << result[i];
	}
}
int main() {
	int n = 0;
	cin >> n;
	string* ptr1 = new string[n];
	string* ptr2 = new string[n];
	int len1, len2;
	for (int k = 0; k < n; k++) {
		cin >> ptr1[k] >> ptr2[k];
	}
	for (int k = 0; k < n; k++) {
		len1 = ptr1[k].size();
		len2 = ptr2[k].size();
		memset(result, 0, sizeof(result));
		multiply(ptr1[k], ptr2[k]);
		int start = 0;
		for (int j = len1 + len2 ; j >= 0; j--) {
			if (result[j] != 0) {
				start = j;
				break;
			}
		}
		print(start);
		cout << endl;
	}
	
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #1175.25 us36 KBRuntime ErrorScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-03-16 13:48:28 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠