c艹 TLE 求助!
查看原帖
c艹 TLE 求助!
730195
Little_Cabbage楼主2023/3/12 11:34

开了O2也过不了

#include <bits/stdc++.h>
#include <set>
using namespace std;
const int N = 1e8;
long long n, m, l, y, sum;
set<long long> s;
bool f[N];

void ff(long long l, long long r) {
	for (int i = l; i <= r; i++) {
		long long x = 0;
		for (int j = 1; j <= i; j *= 10) {
			if (i / j == 0)
				break;
			x++;
		}
		if (x == 1) {
			for (int d1 = 5; d1 <= 9; d1 += 2) {
				sum = d1;
//				cout << sum << ' ';
				s.insert(sum);
			}
		}
		if (x == 2) {
			for (int d1 = 1; d1 <= 9; d1 += 2) {
				sum = 10 * d1 + d1;
//				cout << sum << ' ';
				s.insert(sum);
			}
		}
		if (x == 3) {
			for (int d1 = 1; d1 <= 9; d1 += 2)
				for (int d2 = 0; d2 <= 9; d2++) {
					sum = 100 * d1 + 10 * d2 + d1;
//					cout << sum << ' ';
					s.insert(sum);
				}
		}
		if (x == 4) {
			for (int d1 = 1; d1 <= 9; d1 += 2)
				for (int d2 = 0; d2 <= 9; d2++) {
					sum = 1000 * d1 + 100 * d2 + 10 * d2 + d1;
//					cout << sum << ' ';
					s.insert(sum);
				}
		}
		if (x == 5) {
			for (int d1 = 1; d1 <= 9; d1 += 2)
				for (int d2 = 0; d2 <= 9; d2++)
					for (int d3 = 0; d3 <= 9; d3++) {
						sum = 10000 * d1 + 1000 * d2 + 100 * d3 + 10 * d2 + d1;
//						cout << sum << ' ';
						s.insert(sum);
					}
		}
		if (x == 6) {
			for (int d1 = 1; d1 <= 9; d1 += 2)
				for (int d2 = 0; d2 <= 9; d2++)
					for (int d3 = 0; d3 <= 9; d3++) {
						sum = 100000 * d1 + 10000 * d2 + 1000 * d3 + 100 * d3 + 10 * d2 + d1;
//						cout << sum << ' ';
						s.insert(sum);
					}
		}
		if (x == 7) {
			for (int d1 = 1; d1 <= 9; d1 += 2)
				for (int d2 = 0; d2 <= 9; d2++)
					for (int d3 = 0; d3 <= 9; d3++)
						for (int d4 = 0; d4 <= 9; d4++) {
							sum = 1000000 * d1 + 100000 * d2 + 10000 * d3 + 1000 * d4 + 100 * d3 + 10 * d2 + d1;
//							cout << sum << ' ';
							s.insert(sum);
						}
		}
		if (x == 8) {
			for (int d1 = 1; d1 <= 9; d1 += 2)
				for (int d2 = 0; d2 <= 9; d2++)
					for (int d3 = 0; d3 <= 9; d3++)
						for (int d4 = 0; d4 <= 9; d4++) {
							sum = 10000000 * d1 + 1000000 * d2 + 100000 * d3 + 10000 * d4 + 1000 + d4 * 100 + d3 + 10 * d2 + d1;
//							cout << sum << ' ';
							s.insert(sum);
						}
		}
	}
}

int main() {
	scanf("%lld%lld", &n, &m);
	ff(n, m);
	f[1] = true;
	for (int i = 2; i <= m; i++)
		if (!f[i])
			for (int j = i * 2; j <= m; j += i)
				f[j] = true;
//	for (int i = 1; i <= m; i++)
//		if (!f[i])
//			cout << i << ' ';
	set<long long>::iterator it = s.begin();
	while (it != s.end()) {
		if (*it > m)
			break;
		if (!f[*it] && *it >= n && *it <= m)
			printf("%lld\n", *it);
		it++;
	}
	return 0;
}

2023/3/12 11:34
加载中...