为啥下载测试点本地正确提交几乎全WA
查看原帖
为啥下载测试点本地正确提交几乎全WA
1088732
GXZJQ楼主2024/3/7 21:21

大佬求调

#include<bits/stdc++.h>
using namespace std;
string a1, b1;
int a[10090], b[10090], c[10090], lena, lenb, lenc;
bool fuhao;
void cinit() {
	getline(cin, a1);
	getline(cin, b1);
}
void zhuanhuan() {
	if (a1.length() < b1.length() || (a1.length() == b1.length() && a1 < b1)) {
		swap(a1, b1);
		fuhao = 1;
	}
	if (a1 == b1) {
		fuhao = 0;
	}
	lena = a1.length();//计算位数
	lenb = b1.length();//计算位数
	lenc = lena + lenb;//计算位数
	for (int i = 0; i <= lena; i++) {
		a[i] = a1[lena - i] - '0'; //char转换为int:减去偏移量
	}
	for (int i = 1; i <= lenb; i++) {
		b[i] = b1[lenb - i] - '0'; //char转换为int:减去偏移量
	}
}
void jianfa() {
	for (int i = 1; i <= max(lena, lenb) ; i++) {
		c[i] = a[i] - b[i]; //相减
	}
}
void tuiwei() {
	for (int i = 1; i <= lenc; i++) {
		if (c[i] < 0 ) { //比0小
			c[i + 1] -= 1; //向前退位
			c[i] += 10; //更新当前位
		}
	}
}
void quling() {
	while (c[lenc] == 0 && lenc > 1) {
		lenc--;//去除前导0
	}
}
void coutit() {
	if (fuhao == 1 && a1 != b1) {
		cout << '-';
	}
	for (int i = lenc; i >= 1; i--) {
		cout << c[i]; //倒序输出!
	}
}
int main() {
	cinit();//输入
	zhuanhuan();//转换
	jianfa();//相减
	tuiwei();//退位
	quling();//去除前导0
	coutit();//输出
	return 0;
}

(忽略部分注释)

2024/3/7 21:21
加载中...