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

蓝桥杯 子2023

问题描述

小蓝在黑板上连续写下从 1 到 2023 之间所有的整数,得到了一个数字序列:

S = 12345678910111213...20222023

小蓝想知道:S 中有多少种子序列恰好等于 2023?


子序列的说明

子序列可以从原始序列中按原顺序选出若干字符,但不要求连续

以下是满足条件的 3 种子序列示例(用中括号 [] 标出选中的字符):

1[2]34567891[0]111[2]1[3]14151617181920212223...
1[2]34567891[0]111[2]131415161718192021222[3]...
1[2]34567891[0]111213141516171819[2]021222[3]...

以下是不满足条件的示例(虽然包含了 2、0、2、3,但顺序不对):

1[2]345678910111[2]131415161718192[0]21222[3]...

答案提交

这是一道结果填空题,你只需要算出结果后提交即可。

  • 本题的结果是一个整数
  • 在提交答案时只填写这个整数
  • 填写多余内容将无法得分

c++代码

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

string father, son;
vector<ll> last, now;

int main() {
    father += "#";
    for (ll i = 1; i <= 2023; i++) {
        father += to_string(i);
    }
    son = "#2023";
    //dp[i][j] = dp[i - 1][j] + (arr[i] == arr[j] ? dp[i - 1][j - 1]:0)
    ll n = father.size() - 1, m = son.size() - 1;
    last = vector<ll>(m + 1, 0), now = vector<ll>(m + 1, 0);
    last[0] = 1;
    for (ll i = 1; i <= n; i++) {
        for (ll j = 1; j <= m; j++) {
            now[j] += last[j];
            if (father[i] == son[j]) now[j] += last[j - 1];
        }
        last = now;
        now = vector<ll>(n + 1, 0);
        last[0] = 1;
    }
    cout << last[m];
    return 0;
}//by wqs

相关文章:

  • 博卡软件管理中心8:为美容美发行业量身打造的轻量级管理方案
  • ch05 课堂参考代码
  • Selenium Web自动化如何快速又准确的定位元素路径,强调一遍是元素路径
  • 【C#】Task 线程停止
  • 大模型在支气管扩张预测及治疗方案制定中的应用研究
  • Leetcode 组合总和 III
  • 计算机期刊征稿 | 计算机-网络系统:物联网系统架构、物联网使能技术、物联网通信和网络协议、物联网服务和应用以及物联网的社会影响
  • android studio 运行flutter项目
  • 提示词工程 — 科研论文笔记
  • 软件工程面试题(八)
  • 文章记单词 | 第14篇(六级)
  • 【极速版 -- 大模型入门到进阶】LORA:大模型轻量级微调
  • vsCode项目创建python虚拟环境
  • ECharts折线图源码合集1(共18个自定义图表),附视频讲解与代码下载
  • 深入理解 Hook 系统函数技术
  • Vala 编程语言教程-继承
  • 利用c#书写调用MVS书写的图片处理文件.sol
  • [C++开发经验总结]何时用push?/何时用emplace?
  • Flask项目部署:Flask + uWSGI + Nginx
  • 维智 Harmony NEXT 定位 SDK:鸿蒙生态下的空间智能应用实践
  • 东莞seo整站优化代理/网络营销推广方式都有哪些
  • 网站建设 方案 评价表/网络推广平台网站推广
  • 企业网站建设网/百度教育会员
  • tp框架做展示网站/百度移动端点赞排名软件
  • 做网站后端需要什么语言/如何做自己的网站
  • 现代著名设计师及作品/手机优化软件哪个好