QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#953322#10204. Heretical … Möbiussckrt#TL 6ms6628kbC++202.6kb2025-03-27 18:38:092025-03-27 18:38:09

Judging History

This is the latest submission verdict.

  • [2025-03-27 18:38:09]
  • Judged
  • Verdict: TL
  • Time: 6ms
  • Memory: 6628kb
  • [2025-03-27 18:38:09]
  • Submitted

answer

#include <bits/stdc++.h>
#define test(x) cout<<#x<<" = "<<x<<endl
#define endl '\n'
#define int long long
using namespace std;
const int MAXN = 1e6 + 100, N = 1e9;
int n, m;
string s;

int a[3] = {4, 9, 25}, res[3];
int pri[MAXN],isp[MAXN],cnt;

void init(int n=100000)
{
    for(int i=2;i<=n;++i)
    {
        if(!isp[i]) pri[++cnt]=i;
        for(int j=1;j<=cnt&&i*pri[j]<=n;++j)
        {
            isp[i*pri[j]]=1;
            if(i%pri[j]==0) break;
        }
    }
}

bool chk(int k) {
	for (int i = 1; pri[i]*pri[i] <= k; ++i) {
		int cnt = 0;
		while (k % pri[i] == 0)
			k /= pri[i], ++cnt;
		if (cnt > 1)
			return 0;
	}
	return 1;
}

// bool chk(int k) {
// 	for (int i = 2; i * i <= k; ++i) {
// 		int cnt = 0;
// 		while (k % i == 0)
// 			k /= i, ++cnt;
// 		if (cnt > 1)
// 			return 0;
// 	}
// 	return 1;
// }

void solve() {
	n = 200, m = 44100;
	{
		string s0;
		for (int i = 1; i <= 10; ++i) {
			cin >> s0;
			s += s0;
		}
	}
	int vis[50] = {0};
	for (int i = 0; i < 3; ++i)
		for (int st = 0; st < a[i]; ++st) {
			int ok = 1;
			for (int j = st; j < n; j += a[i])
				if (s[j] == '1') {
					ok = 0;
					break;
				}
			if (ok) {
				if (res[i] > 0) {
					cout << "-1";
					return;
				}
				res[i] = st;
			}
		}
	for (int st = 0; st < 49; ++st) {
		int ok = 1;
		for (int j = st; j < n; j += 49)
			if (s[j] == '1') {
				ok = 0;
				break;
			}
		if (ok) {
			vis[(49 - st) % 49] = 1;
		}
	}
	vector<int> ast, ans;
	for (int st = 1; st <= m; ++st) {
		int ok = 1;
		for (int i = 0; i < 3; ++i)
			if ((st + res[i]) % a[i] != 0)
				ok = 0;
		if (vis[st % 49] == 0)
			ok = 0;
		if (ok)
			ast.push_back(st);
	}
	for (int st : ast)
		for (int i = st; i <= 1e9; i += m) {
			int ok = 1;
			for (int t = 0; t < n; ++t) {
				if (chk(t + i) != s[t] - '0')
					ok = 0;
			}
			if (ok) {
				ans.push_back(i);
				break;
			}
		}
	if (ans.size() == 0)
		cout << "-1";
	else {
		sort(ans.begin(), ans.end());
		cout << ans[0];
	}
}

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
    init();
	int tt = 1;
//	cin >> tt;
	while (tt--)
		solve();
}

/*

11101110011011101010
11100100111011101110
11100110001010101110
11001110111011001110
01101110101011101000
11101110111011100110
01100010111011001110
11101100101001101110
10101110010011001110
11101110011011101010

01010101010101010101
10101010101010101010
01010101010101010101
10101010101010101010
01010101010101010101
10101010101010101010
01010101010101010101
10101010101010101010
01010101010101010101
10101010101010101010

*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 6624kb

input:

11101110011011101010
11100100111011101110
11100110001010101110
11001110111011001110
01101110101011101000
11101110111011100110
01100010111011001110
11101100101001101110
10101110010011001110
11101110011011101010

output:

1

result:

ok "1"

Test #2:

score: 0
Accepted
time: 0ms
memory: 6628kb

input:

01010101010101010101
10101010101010101010
01010101010101010101
10101010101010101010
01010101010101010101
10101010101010101010
01010101010101010101
10101010101010101010
01010101010101010101
10101010101010101010

output:

-1

result:

ok "-1"

Test #3:

score: 0
Accepted
time: 6ms
memory: 6624kb

input:

11011101110011011101
01011101100111010101
11011100110111010101
10011001110111011101
11001001110101011101
10011101010010011100
11011101010111010001
11011101110111001101
10010101010110011101
11001101110011011101

output:

5201314

result:

ok "5201314"

Test #4:

score: -100
Time Limit Exceeded

input:

00110111010001110110
01010111011100010010
01110101011101100101
01110111011000110111
01000111011001110111
01110111001101110101
01110110011000110011
01110011011101010101
01100111001101110111
00100101010101110110

output:


result: