求助,有没有不开o2过最后一个测试点的方法
查看原帖
求助,有没有不开o2过最后一个测试点的方法
1049535
iamaretardiamaretard楼主2023/8/8 16:22
#include <iostream>
#include <stdlib.h>
#include <bitset>
#include <iomanip>
#include <cmath>
#include <algorithm>
#include <numeric>
#include <vector>
#include <string>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 1e8 + 10;
bitset <maxn> pri;
int chosen[maxn];
int pp = 0;

//欧拉
inline void eular(int a) {
	for (int i = 2; i <= a ; i += 1) {
		if (!pri[i])
			chosen[++pp] = i;
		for (int j = 1;  j <= pp &&  chosen[j] *i <= a; j++) {
			pri[i * chosen[j]] = 1;
			if (!i % chosen[j]  )
				break;
		}
	}

}

//判断回文数
inline bool access(int e) {
	int temp = e, ans = 0;
	while (temp) {
		ans += (temp % 10);
		temp /= 10;
		if (temp > 0)
			ans *= 10;
	}
	return (ans == e ? 1 : 0);
}

int main() {
	int b, a, p;
	scanf ("%d %d", &b, &a);
	eular(a);
	for (int i = 1; i <= pp; i++) {
		if (b <= chosen[i]) {
			p = i;
			break;
		}
	}
	for (int i = p; i <= pp; i++) {
		if (access(chosen[i]))
			printf("%d\n", chosen[i]);
	}

}

2023/8/8 16:22
加载中...