样例能过,但一分都拿不到
  • 板块P1942 词编码
  • 楼主loegoo
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/19 18:06
  • 上次更新2024/7/19 20:07:42
查看原帖
样例能过,但一分都拿不到
1149039
loegoo楼主2024/7/19 18:06
#include <bits/stdc++.h>
using namespace std;
int n, t = 0;
string a;

bool f(string s) {
	int gg = 0;
	for (int i = 0; i < n; i++) {
		if (s[i] == '1')
			gg = gg + i + 1;
	}
	if (gg == 0)
		return 1;
	else if (gg % (n + 1) == 0)
		return 1;
	else
		return 0;
}

void ff() {
	t = 0;
	int l = a.length();
	if (l == n) {
		if (f(a) == 1) {
			cout << a << endl;
			return;
			t = 1;
		} else {
			for (int i = 0; i < n; i++) {
				if (a[i] == '1') {
					a[i] = '0';
					if (f(a) == 1) {
						cout << a << endl;
						t = 1;
						break;
						return;
					} else {
						a[i] = '1';
					}
				}
			}
		}
		if (t == 0) {
			cout << -1 << endl;
			return;
		}
	} else if (n - l == 1) {
		int t2 = 0;
		for (int i = 0; i < n; i++) {
			string te = a;
			te.insert(i, "0");
			if (f(te) == 1) {
				cout << te << endl;
				t2 = 1;
				break;
				return;
			}
			te = a;
			te.insert(i, "1");
			if (f(te) == 1) {
				cout << te << endl;
				t2 = 1;
				break;
				return;
			}

		}
		if (t2 == 0) {
			cout << "-1" << endl;
			return;
		}
	} else if (l - n == 1) {
		for (int i = 0; i <= n; i++) {
			string te = a;
			te.erase(i, 1);
			if (f(te) == 1) {
				cout << te << endl;
				break;
				return;
			}
		}
	} else {
		cout << "-1" << endl;
		return;
	}
}

int main() {
	cin >> n;
	while (cin >> a) {
		ff();
	}
	return 0;
}
2024/7/19 18:06
加载中...