社区讨论

为什么只过了一个点,求教,定回关

B3850[GESP202306 四级] 幸运数参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m4feaqtl
此快照首次捕获于
2024/12/08 17:22
去年
此快照最后确认于
2025/11/04 13:07
4 个月前
查看原帖
样例和自己随便试的几个数,都没问题
CPP
#include <iostream>
using namespace std;

int weic(int x) {
	if (x <= 9)
		return x;
	else
		return weic(x % 10 + (x - x % 10) / 10);
}

int swei(int x) {
	int wei = 0;

	for (; x > 0;) {

		x = (x - x % 10) / 10;
		wei++;
	}

	return wei;
}

int ten(int x, int i) {
	if (i == 0)
		return x;
	else
		return ten(x * 10, i - 1);
}

long long change(long long x) {
	int a[12], b = swei(x), num = 0;

	for (int i = 0; i <= b - 1; i++) {

		a[i] = x % 10;
		x = (x - x % 10) / 10;
	}

	for (int i = 0; i <= b - 1; i += 2)

		a[i] = weic(a[i] * 7);

	for (int i = 0; i <= b - 1; i++)

		num += ten(a[i], i);
	return num;
}

int sum(long long x) {
	int a = swei(x), b = 0;

	for (int i = 1; i <= a; i++) {

		b += x % 10;
		x = (x - x % 10) / 10;
	}

	return b;
}

int main() {
	long long x;
	int n;

	cin >> n;

	for (int i = 1; i <= n; i++) {

		cin >> x;

		if (sum(change(x)) % 8 == 0)
			cout << "T" << endl;
		else
			cout << "F" << endl;
	}

	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...