关于P1957 口算练习题的系统问题
  • 板块灌水区
  • 楼主L_Legend
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/10/27 22:19
  • 上次更新2023/11/4 02:06:36
查看原帖
关于P1957 口算练习题的系统问题
533879
L_Legend楼主2021/10/27 22:19

https://www.luogu.com.cn/problem/P1957

这是我的代码:

#include<bits/stdc++.h>
using namespace std;
string c;
char s, l;
int a, b, all, note;
int main() {
	int n;
	cin >> n;
	for (int i = 0; i <= n; i++) {
		getline(cin, c);
		if (c[0] == 'a' || c[0] == 'b' || c[0] == 'c') {
			s = c[0];
			int j = c.length() - 1, x = 1;
			while (c[j] != ' ') {
				b += (c[j] - '0') * x;
				j--;
				x *= 10;
			}
			j--;
			x = 1;
			while (c[j] != ' ') {
				a += (c[j] - '0') * x;
				j--;
				x *= 10;
			}
			if (note == 1) {
				if (s == 'a') {
					cout << a << "+" << b << "=" << a + b << endl;
					all = a + b;
				} else if (s == 'b') {
					cout << a << "-" << b << "=" << a - b << endl;
					all = a - b;
				} else {
					cout << a << "*" << b << "=" << a * b << endl;
					all = a * b;
				}
			}
			l = s;
		} else {
			int j = c.length() - 1, x = 1;
			while (c[j] != ' ') {
				b += (c[j] - '0') * x;
				j--;
				x *= 10;
			}
			j--;
			x = 1;
			for (int i = j; i >= 0; i--) {
				a += (c[i] - '0') * x;
				x *= 10;
			}
			if (note == 1) {
				if (l == 'a') {
					cout << a << "+" << b << "=" << a + b << endl;
					all = a + b;
				} else if (l == 'b') {
					cout << a << "-" << b << "=" << a - b << endl;
					all = a - b;
				} else {
					cout << a << "*" << b << "=" << a * b << endl;
					all = a * b;
				}
			}
		}
		int sl = 2;
		if (a < 0) {
			sl++;
			a *= -1;
		}
		if (b < 0) {
			sl++;
			b *= -1;
		}
		if (all < 0) {
			sl++;
			all *= -1;
		}
		while (a > 0) {
			sl++;
			a /= 10;
		}
		while (b > 0) {
			sl++;
			b /= 10;
		}
		while (all > 0) {
			sl++;
			all /= 10;
		}
		if (note == 1) {
			cout << sl << endl;
		}
		note = 1;
		a = 0;
		b = 0;
	}
	return 0;
}

可能做法笨了点,但是应该答案还是对的。

我试了样例和提交后错的第一个样例,我自己运行了下,看着都是对的,可为什么提交上去,全WA了???

2021/10/27 22:19
加载中...