| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 315656 | yukunwei | 守序数 T4 | C | 运行出错 | 8 MS | 8308 KB | 1130 | 2026-04-12 12:28:07 |
#include <stdio.h> #include <stdlib.h> #define MAX_QUEUE_SIZE 1000000 // 队列最大容量,适应n=1e6的需求 int main() { int n; scanf("%d", &n); // 初始化队列,存储守序数 long long* queue = (long long*)malloc(MAX_QUEUE_SIZE * sizeof(long long)); int front = 0, rear = 0; // 1-9是初始守序数(一位数) for (int i = 1; i <= 9; i++) { queue[rear++] = i; } long long result = 0; for (int count = 0; count < n; count++) { long long current = queue[front++]; // 取出队首元素 result = current; int last_digit = current % 10; // 可能的下一位数字:last_digit-1, last_digit, last_digit+1(需在0-9范围内) for (int d = last_digit - 1; d <= last_digit + 1; d++) { if (d >= 0 && d <= 9) { long long next_num = current * 10 + d; // 生成新的守序数 queue[rear++] = next_num; } } } printf("%lld\n", result); free(queue); return 0; }