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 山枚举的主要内容,如果未能解决你的问题,请参考以下文章

LQ0018 顺子日期枚举+日期

LQ0068 X进制减法进制

LQ0020 加法变乘法枚举

LQ0106 方格填数枚举

LQ0031 生日蜡烛枚举

LQ0009 平方十位数枚举