LQ0090 山枚举
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0090 山枚举相关的知识,希望对你有一定的参考价值。
题目来源:蓝桥杯2022初赛 Java B组B题
题目描述
这天小明正在学数数。
他突然发现有些正整数的形状像一座“山”,比如123565321、145541。
它们左右对称(回文)且数位上的数字先单调不减,后单调不增。
小明数了很久也没有数完,他想让你告诉他在区间[2022; 2022222022] 中有多少个数的形状像一座“山”。
这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
问题分析
写一个统计程序,运行时间太长了,大概需要将近10分钟。
计算结果是3138。
AC的C语言程序如下:
/* LQ0090 山 */
#include <stdio.h>
#include <string.h>
#define L 2022
#define R 2022222022
char t[16];
int judge(int n)
sprintf(t, "%d", n);
int l = 0, r = strlen(t) - 1;
while (l < r)
if (t[l] > t[l + 1]) return 0; /* 不是山 */
if (t[l] != t[r]) return 0; /* 不是回文 */
l++, r--;
return 1;
int main()
// int cnt = 0;
// for (int i = L; i <= R; i++)
// if (judge(i))
// cnt++;
// printf("%d\\n", cnt);
printf("3138\\n");
return 0;
以上是关于LQ0090 山枚举的主要内容,如果未能解决你的问题,请参考以下文章