@杜帅师师师 我抄你答案你就受着呗
原题链接:328.回文数2025-10-11 21:06:04
发布于:福建
受着呗受着呗受着呗受着呗受着呗受着呗受着呗受着呗受着呗受着呗受着呗受着呗受着呗受着呗受着呗受着呗受着
#include <cstdio>
// 生成回文数并输出,无额外缓冲区,直接计算
int main() {
int n;
scanf("%d", &n);
// 输出1-9的一位数回文数(无内存开销)
for (int i = 1; i <= 9 && i <= n; ++i) {
putchar('0' + i);
putchar('\n');
}
// 生成两位数回文数 (11,22,...,99)
if (n >= 11) {
for (int i = 1; i <= 9; ++i) {
int val = i * 11;
if (val > n) break;
putchar('0' + i);
putchar('0' + i);
putchar('\n');
}
}
// 生成三位数回文数 (101,111,...,999)
if (n >= 101) {
for (int i = 1; i <= 9; ++i) {
for (int j = 0; j <= 9; ++j) {
int val = i * 100 + j * 10 + i;
if (val > n) break;
putchar('0' + i);
putchar('0' + j);
putchar('0' + i);
putchar('\n');
}
}
}
// 生成四位数回文数 (1001,1111,...,9999)
if (n >= 1001) {
for (int i = 1; i <= 9; ++i) {
for (int j = 0; j <= 9; ++j) {
int val = i * 1000 + j * 100 + j * 10 + i;
if (val > n) break;
putchar('0' + i);
putchar('0' + j);
putchar('0' + j);
putchar('0' + i);
putchar('\n');
}
}
}
// 生成五位数回文数 (10001,10101,...,99999)
if (n >= 10001) {
for (int i = 1; i <= 9; ++i) {
for (int j = 0; j <= 9; ++j) {
for (int k = 0; k <= 9; ++k) {
int val = i * 10000 + j * 1000 + k * 100 + j * 10 + i;
if (val > n) break;
putchar('0' + i);
putchar('0' + j);
putchar('0' + k);
putchar('0' + j);
putchar('0' + i);
putchar('\n');
}
}
}
}
// 生成六位数回文数 (100001,101101,...,999999) - 仅当n >= 100001时
if (n >= 100001) {
for (int i = 1; i <= 9; ++i) {
for (int j = 0; j <= 9; ++j) {
for (int k = 0; k <= 9; ++k) {
int val = i * 100000 + j * 10000 + k * 1000 + k * 100 + j * 10 + i;
if (val > n) break;
putchar('0' + i);
putchar('0' + j);
putchar('0' + k);
putchar('0' + k);
putchar('0' + j);
putchar('0' + i);
putchar('\n');
}
}
}
}
return 0;
}
全部评论 2
依旧受着%%%
1周前 来自 浙江
0笑死直接受着
1周前 来自 福建
0
有帮助,赞一个