社区讨论
喜闻乐见之爆0(求大佬救救小登)
P1217[USACO1.5] 回文质数 Prime Palindromes参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @m206pfi8
- 此快照首次捕获于
- 2024/10/08 16:33 去年
- 此快照最后确认于
- 2025/11/04 17:38 4 个月前
CPP
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
bool a(int num) {
if (num <= 1) return false;
if (num == 2) return true;
if (num % 2 == 0) return false;
for (int i = 3; i <= sqrt(num); i += 2) {
if (num % i == 0) return false;
}
return true;
}
int main() {
int m, n;
vector<int> numbers;
cin >> m >> n;
int range = (n > 1000000) ? 2 : (n > 10000) ? 1 : 0;
if (n > 100) {
switch (range) {
case 2:
for (int i = 1; i <= 9; i++) {
for (int j = 0; j <= 9; j++) {
for (int q = 0; q <= 9; q++) {
for (int p = 0; p < 9; p++) {
int sum = 1000000 * i + 100000 * j + 10000 * q + 1000 * p + 100 * q + 10 * j + i;
if (sum >= n && sum <= m && a(sum)) {
numbers.push_back(sum);
}
}
}
}
}
break;
case 1:
for (int j = 1; j <= 9; j++) {
for (int q = 0; q <= 9; q++) {
for (int p = 0; p <= 9; p++) {
int sum = 10000 * j + 1000 * q + 100 * p + 10 * q + j;
if (sum >= n && sum <= m && a(sum)) {
numbers.push_back(sum);
}
}
}
}
break;
case 0:
for (int q = 1; q <= 9; q++) {
for (int p = 0; p <= 9; p++) {
int sum = 100 * q + 10 * p + q;
if (sum >= n && sum <= m && a(sum)) {
numbers.push_back(sum);
}
}
}
break;
}
}
else {
if (n <= 100 && n >= 11) {
numbers.push_back(5);
numbers.push_back(7);
numbers.push_back(11);
}
if (n < 11 && n >= 7) {
numbers.push_back(5);
numbers.push_back(7);
}
if (n < 7 && n >= 5) {
numbers.push_back(5);
}
}
sort(numbers.begin(), numbers.end());
for (int num : numbers) {
cout << num << endl;
}
return 0;
}
CPP#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
bool a(int num) {
if (num <= 1) return false;
if (num == 2) return true;
if (num % 2 == 0) return false;
for (int i = 3; i <= sqrt(num); i += 2) {
if (num % i == 0) return false;
}
return true;
}
int main() {
int m, n;
vector<int> numbers;
cin >> m >> n;
int range = (n > 1000000) ? 2 : (n > 10000) ? 1 : 0;
if (n > 100) {
switch (range) {
case 2:
for (int i = 1; i <= 9; i++) {
for (int j = 0; j <= 9; j++) {
for (int q = 0; q <= 9; q++) {
for (int p = 0; p <= 9; p++) {
int sum = 1000000 * i + 100000 * j + 10000 * q + 1000 * p + 100 * q + 10 * j + i;
if (sum >= n && sum <= m && a(sum)) {
numbers.push_back(sum);
}
}
}
}
}
break;
case 1:
for (int j = 1; j <= 9; j++) {
for (int q = 0; q <= 9; q++) {
for (int p = 0; p <= 9; p++) {
int sum = 10000 * j + 1000 * q + 100 * p + 10 * q + j;
if (sum >= n && sum <= m && a(sum)) {
numbers.push_back(sum);
}
}
}
}
break;
case 0:
for (int q = 1; q <= 9; q++) {
for (int p = 0; p <= 9; p++) {
int sum = 100 * q + 10 * p + q;
if (sum >= n && sum <= m && a(sum)) {
numbers.push_back(sum);
}
}
}
break;
}
}
else {
if (n <= 100 && n >= 11) {
numbers.push_back(5);
numbers.push_back(7);
numbers.push_back(11);
}
if (n < 11 && n >= 7) {
numbers.push_back(5);
numbers.push_back(7);
}
if (n < 7 && n >= 5) {
numbers.push_back(5);
}
}
sort(numbers.begin(), numbers.end());
for (int num : numbers) {
cout << num << endl;
}
return 0;
}
本地运行直接返回空,感觉思路没啥问题啊(大悲)
早知道不头铁用switch-case语句了
回复
共 3 条回复,欢迎继续交流。
正在加载回复...