当前位置: 首页 > news >正文

蓝桥杯:山

本题是一道数学,与枚举的题目,所谓形状像山的数字,就是前半段单调不减,后半段单调不增的回文数字,对于本题来说我们需要对数字位数为偶数和奇数的数字分别进行枚举,因为对于偶数位回文来说只要前半段单调不减,后半部分只有一种情况,也就是说偶数回文是完全对称的。而对于奇数位回文来说,除去中间的数字,前后两部分完全对称的前提下,中间的数字就有若干种情况,那么我们枚举的偶数回文和奇数回文的起始和终止是什么呢,对于偶数回文来说,最小的偶数回文是2222,最大的偶数回文是1999999991,对于奇数回文来说,最小的奇数回文是11111,最大的奇数回文是999999999,知道起始和终止之后,我们只需要保证数字的前半部分单调不减,再分别对偶数回文和奇数回文进行处理即可,所以我们写一个检查一个数字是否是单调不减的回调函数,方便后面使用。接着,对于偶数回文的处理,我们前面已经说过了,那么对于奇数回文来说,我们举几个例子,11111,那么中间的数字有9种情况,12221,中间的数字有8种情况,我们发现中间数字的情况数,取决于他前面的数字i,因为要保证前半段单调不减,后半段单调不增,所以中间的情况数即10-(i%10);通过对两种情况下的回文进行处理,我们就可以得到所给区间一共有几个"山"数字

#include <bits/stdc++.h>

using namespace std;

#define int long long

/*
回文数字:
前半部分单调不减后半部分单调不增
将一个数字分成两部分讨论,有两种情况一种是这个数字有偶数位,另一种有奇数位
这两种情况分别讨论,分别枚举最小的偶数位数字的前半部分和最大的后半部分
对于偶数位:最小的为22(2222) ,最大为19999 (19999 99991)
对于奇数位:最小的为11(11111),最大为9999 (9999 9 9999)

*/

bool check(int n) {//判断n是否是单调不减

    while (n) {
        int t = n % 10;
        int t1 = n / 10 % 10;
        if (t1 > t) return false;
        else n /= 10;
    }
    return true;

}


signed main() {

    int cnt = 0;

    //偶数位
    for (int i = 22; i <= 19999;i++) {
        if (check(i)) cnt++;//对于偶数为来说只有完全对称才能是偶数回文,所以后半部分只有一种情况
    }

    //奇数位
    //由于999999999是回文,所以我们最大遍历到8999
    for (int i = 11; i <= 8999;i++) {
        if (check(i)) cnt += 10 - (i % 10);//对中间的情况有这几种选择,例如11x11,中间就有1-9种选择,x可以是{1....9}
    }

    cnt++;//9999

    cout << cnt;

    return 0;
}

相关文章:

  • R语言高效数据处理-自定义EXCEL数据排版
  • 顺序表和链表的对比(一)
  • 基于Uniapp开发tab选项卡/标签栏前端组件
  • 医院手术麻醉信息系统是如何为医院提质增效的?
  • 【Kubernets】Deployment 和 StatefulSet 有什么区别?什么时候用 StatefulSet?
  • WIN10隐藏文件夹怎么显示?
  • pip install和conda install的区别
  • Vue秘籍:如何动态修改页面 Title(浏览器页签名称)?
  • Shell 脚本实现内存和磁盘监控
  • C语言踩坑题:int8_t类型数据的移位或运算
  • (五)Dart 数据类型
  • 嵌入式人工智能应用- 第十章街景分类
  • 现在有分段、句子数量可能不一致的中英文文本,如何用python实现中英文对照翻译(即每行英文对应相应的中文)
  • C# 建造者模式(Builder Pattern)详细讲解
  • 一文了解CAS
  • 图片标注及流程
  • 如何使用Python的matplotlib.pyplot绘制热图和损失图
  • 二进制数(十进制转二进制)
  • ObjC NSString字符串常量编码格式是编译器决定还是ObjC语言规范决定?字符串默认编码?
  • 【VUE】day02-vue过滤器、计算属性、vue-cli、vue组件
  • 美国参议院投票通过戴维·珀杜出任美国驻华大使
  • 举牌超200轮!中铁建7.76亿元竞得北京通州梨园宅地
  • 人社部:将制定提前领取个人养老金相关办法
  • 2025上海车展 | 当智驾不再让人兴奋,汽车智能化暗战升级
  • 俄乌战火不熄,特朗普在梵蒂冈与泽连斯基会晤后口风突变
  • 脱发后怎么把头发养回来?脱发自救指南来了