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

蓝桥杯3503 更小的数

问题描述

图片描述

小蓝有一个长度均为 n 且仅由数字字符 0∼9 组成的字符串,下标从 0 到 n−1,你可以将其视作是一个具有 n 位的十进制数字 num,小蓝可以从 num 中选出一段连续的子串并将子串进行反转,最多反转一次。

小蓝想要将选出的子串进行反转后再放入原位置处得到的新的数字 num_new​ 满足条件 num_new<num,请你帮他计算下一共有多少种不同的子串选择方案,只要两个子串在 num 中的位置不完全相同我们就视作是不同的方案。

注意,我们允许前导零的存在,即数字的最高位可以是 0,这是合法的。

输入格式

输入一行包含一个长度为 n 的字符串表示 num(仅包含数字字符 0∼9),从左至右下标依次为 0∼n−1。

输出格式

输出一行包含一个整数表示答案。

样例输入

210102

样例输出

8

 

枚举所有子串,对每个子串 s[i..j],用双指针 i 和 j 从两端向中间移动,跳过相同字符,比较第一个不同的字符对,若 s[i] > s[j],则计数

#include<iostream>
#include<cstring>
using namespace std;const int N = 5e3+10;
string s;int ans;//判断子串 s[i..j] 的反转是否比原子串小
void check(int i, int j)
{//跳过相同字符while(s[i]==s[j] && i<j){i++;j--;}//如果所有字符都相同,则反转后子串与原串相同,直接返回 if(i>=j) return;//反转后的子串比原串小if(s[i]>s[j]) ans++;return;
}int main()
{cin>>s;int len = s.size();for(int i=0; i<len-1; ++i){for(int j=i+1; j<len; ++j)  //确保子串至少有两个字符{check(i, j);}}cout<<ans;return 0;
}
http://www.xdnf.cn/news/568711.html

相关文章:

  • polarctf-web-[某函数的复仇]
  • 基于python的机器学习(七)—— 数据特征选择
  • PostgreSQL中通过查询数据插入到表的几种方法( SELECT INTO和INSERT INTO ... SELECT)
  • uniapp+vue3 随机、换一批
  • anaconda创建环境出错HTTPS
  • Captiks动捕与步态分析步态分析系统MOVIT:16μs 无线同步 + 快速校准,破解传统光电困局
  • 集成 OpenTelemetry + Grafana:实现 ABP VNext 的全链路可观测性
  • API面临哪些风险,如何做好API安全?
  • vue+threeJs 创建千色三角形宇宙
  • spring-retry
  • Pandoc3.7新特性:存在合并单元格的 HTML 表格会被保留为嵌入的 HTML 表格
  • WordPress Elementor零基础教程
  • 【Redis8】最新安装版与手动运行版
  • 电商项目-商品微服务-规格参数管理,分类与品牌管理需求分析
  • FFmpeg中使用Android Content协议打开文件设备
  • 免费的DDOS防护对网站业务有用吗?
  • 电子电路:什么是寄生电容?
  • 迅为RK3568开发板Linux_NVR_SDK系统开发编译 rootfs 提示分区小
  • 以太坊ETH创建代币完整教程
  • 2025.05.21华为暑期实习机考真题解析第一题
  • html,js获取扫码设备的输入内容
  • 自监督学习与监督学习
  • docker中使用openresty
  • 《国家职业教育平台:点亮职业教育新灯塔》
  • JMeter 教程:正则表达式提取器提取 JSON 字段数据
  • 鸿蒙HarmonyOS最新的组件间通信的装饰器与状态组件详解
  • 多模态学习笔记
  • C语言中的内存函数
  • node.js如何实现双 Token + Cookie 存储 + 无感刷新机制
  • docker exec -it abc bash