Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum 题解 数位dp

电荷灵敏前置放大器噪声优化策略:从理论到实践 本文深入探讨了电荷灵敏前置放大器的噪声优化策略,从理论分析到实践应用。文章系统解析了并联电流噪声与串联电压噪声的来源,并引入噪声等效原理与“冷电容”模型作为统一分析工具。通过详解a、b、c三类噪声的频谱特性,为实战优化提供了清晰指导。核心策略包括选用高跨导、低漏电流FET,优化静态工作点,采用共源-共基结构,精心设计反馈网络,以及实施严格的PCB布局、屏蔽与接地,旨在全面提升微弱信号检测系统的信噪比。 阅读详情

Segment Sum

题目描述

You are given two integers l l l and r r r ( l ≤ r l \le r l≤r). Your task is to calculate the sum of numbers from l l l to r r r (including l l l and r r r) such that each number contains at most k k k different digits, and print this sum modulo 998244353 998244353 998244353.

For example, if k = 1 k = 1 k=1 then you have to calculate all numbers from l l l to r r r such that each number is formed using only one digit. For l = 10 , r = 50 l = 10, r = 50 l=10,r=50 the answer is 11 + 22 + 33 + 44 = 110 11 + 22 + 33 + 44 = 110 11+22+33+44=110.

输入格式

The only line of the input contains three integers l l l, r r r and k k k ( 1 ≤ l ≤ r < 1 0 18 , 1 ≤ k ≤ 10 1 \le l \le r < 10^{18}, 1 \le k \le 10 1≤l≤r<1018,1≤k≤10) — the borders of the segment and the maximum number of different digits.

输出格式

Print one integer — the sum of numbers from l l l to r r r such that each number contains at most k k k different digits, modulo 998244353 998244353 998244353.

提示

For the first example the answer is just the sum of numbers from l l l to r r r which equals to 50 ⋅ 51 2 − 9 ⋅ 10 2 = 1230 \frac{50 \cdot 51}{2} - \frac{9 \cdot 10}{2} = 1230 250⋅51​−29⋅10​=1230. This example also explained in the problem statement but for k = 1 k = 1 k=1.

For the second example the answer is just the sum of numbers from l l l to r r r which equals to 2345 ⋅ 2346 2 = 2750685 \frac{2345 \cdot 2346}{2} = 2750685 22345⋅2346​=2750685.

For the third example the answer is 101 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 121 + 122 + 131 + 133 + 141 + 144 + 151 = 2189 101 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 121 + 122 + 131 + 133 + 141 + 144 + 151 = 2189 101+110+111+112+113+114+115+116+117+118+119+121+122+131+133+141+144+151=2189.

题面翻译

给定 l , r , k l, r, k l,r,k,求 [ l , r ] [l, r] [l,r] 之间的各数位上包含的不同数字不超过 k k k 个的所有数的和。答案对 998244353 998244353 998244353 取模。

数据规模与约定

1 ≤ l ≤ r ≤ 1 0 18 1 \leq l \leq r \leq 10^{18} 1≤l≤r≤1018,
1 ≤ k ≤ 10 1 \leq k \leq 10 1≤k≤10。

样例 #1

样例输入 #1

10 50 2

样例输出 #1

1230

样例 #2

样例输入 #2

1 2345 10

样例输出 #2

2750685

样例 #3

样例输入 #3

101 154 2

样例输出 #3

2189

原题

CF——传送门
洛谷——传送门

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const ll mod = 998244353;
int k;                              // 条件:不超过k个不同数字
pair<int, int> dp[20][1 << 12][12]; // dp记录[pos][mask][last]状态下的满足条件的个数
int a[20];                          // a[]记录数字串

// 检查此时是否超过了k个不同数字
bool check(ll mask)
{
    int tot = 0;
    for (int i = 0; i <= 9; i++)
    {
        if ((mask >> i) & 1)
            tot++;
    }
    if (tot > k)
        return 0;
    else
        return 1;
}

// 进行答案的运算
void add(pair<int, int> &res, pair<int, int> dfs_ret, int num, int pos)
{
    res.first += dfs_ret.first;
    res.first %= mod;

    res.second += 1ll * dfs_ret.first % mod * num % mod * ((ll)pow(10, pos) % mod) % mod;
    res.second %= mod;
    res.second += dfs_ret.second;
    res.second %= mod;
}

// pos为此时的位置,mask是对0~10各个数是否存在的状态压缩,last记录上一个数,bound表示前面每一位是否都是上界,lead_0表示是否前面全是0
pair<int, int> dfs(int pos, ll mask, int last, bool bound, bool lead_0) // pair<int,int>的first记录当前方案数,second记录当前总和
{
    if (!check(mask))
        return {0, 0};
    if (pos == 0)                                             // 枚举完每一位时返回
        return {1, last};                                     // 方案数+1,总和+last
    if (!bound && !lead_0 && dp[pos][mask][last].first != -1) // 读取记忆(doge
        return dp[pos][mask][last];
    int max_num; // 可枚举的该位的数的上界
    if (bound)
        max_num = a[pos];
    else
        max_num = 9;
    pair<int, int> res = {0, 0}; // 统计方案数和总和
    for (int i = 0; i <= max_num; i++)
    {
        if (lead_0 && i == 0)
            add(res, dfs(pos - 1, mask, last, bound && (i == a[pos]), 1), 0, 0);
        else
            add(res, dfs(pos - 1, mask | (1 << i), i, bound && (i == a[pos]), 0), last, pos);
    }
    if (!bound && !lead_0) // 没在边界时,记录下该状态对应的答案,记忆化
        dp[pos][mask][last] = res;
    return res;
}

int solve(ll x)
{
    int len = 0; // 数字长度
    while (x)
    {
        a[++len] = x % 10;
        x /= 10;
    }
    return dfs(len, 0, 0, 1, 1).second;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    memset(dp, -1, sizeof(dp)); // 将dp数组初始化为-1,表示对应状态的答案目前还未计算出
    ll l, r;
    cin >> l >> r >> k;
    cout << ((solve(r) - solve(l - 1)) % mod + mod) % mod << '\n';

    return 0;
}
uniapp(全端兼容)-最新详细实现接入腾讯云IM即时通讯教程,uniapp在安卓苹果app端/小程序/h5移动端等集成使用腾讯云im插件,提供消息列表与聊天对话示例,支持发图片/私聊/实时监听消息 uni-app,腾讯云IM,安卓app,苹果app,微信小程序,移动端,H5网页,手机网站,微信小程序、支付宝小程序,手机app端,nvue,im即时通讯,腾讯云IM详细教程,如何接入腾讯IM即时通讯,使用腾讯im有没有插件,怎么使用腾讯云IM插件,tim-wx-sdk,聊天sdk,即时通讯im uniapp私聊/群聊/聊天室,实现IM即时通讯仿微信聊天功能,对接腾讯云IM+音视频,调用腾讯即时通信IM的示例,卡顿很卡不流畅,音视频,全局监听,仿微信IM,uni-huanxin-im,sdk,实现多端实时通 阅读详情

相关推荐

逆向选择启示录:一个失败高频策略如何意外跑赢市场

本文探讨了高频交易中的逆向选择现象,揭示了一个失败的高频策略如何通过简化意外跑赢市场。通过加密货币市场的实证分析和蒙特卡洛模拟,研究发现低预测性的简单策略反而更具鲁棒性,有效规避了逆向选择风险。文章还提供了小币种做市策略的优化框架和实践建议,为量化交易者提供了宝贵洞见。

weixin_29191669的博客 401

Codeforces1073 E. Segment Sum(数位dp)

【代码】Codeforces1073 E. Segment Sum(数位dp)

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 198

3.1 计算机视觉的发展和卷积神经网络概要(百度架构师手把手带你零基础实践深度学习原版笔记系列)

3.1 计算机视觉的发展和卷积神经网络(百度架构师手把手带你零基础实践深度学习原版笔记系列) 概要 计算机视觉作为一门让机器学会如何去“看”的科学学科,具体的说,就是让机器去识别摄像机拍摄的图片或视频中的物体,检测出物体所在的位置,并对目标物体进行跟踪,从而理解并描述出图片或视频里的场景和故事,以此来模拟人脑视觉系统。因此,计算机视觉也通常被叫做机器视觉,其目的是建立能够从图像或者视频中“感知”信息的人工系统。 计算机视觉技术经过几十年的发展,已经在交通(车牌识别、道路违章抓拍)、安防(人脸闸机.

aiAI 691

【题解】codeforces1097H数位dp+合并技巧

题目 题意 按原题给出一个序列生成方式。求第[l,r]为间有多少子串A满足A &lt;= B &lt;= 定义为每一位都小于等于 题解 思路: 维护长度为d^i的区间的信息,使得区间可以合并。 这样合并区间的思路非常常见。在计数和线段树。。。都可以用到 注意: 维护的时候如果位数不够补充成0 这样合并的时候不用再check整块是否合法 关于位运算,用all维护所有状态,可以方面的实现删除和保留一...

执子之手,与子偕老 484

【Python实战解析】从数据爬取到房价预测:一个完整的数据科学项目流程拆解

本文详细拆解了一个完整的Python数据科学项目流程,从爬取长沙二手房数据到房价预测模型构建。通过实战案例,介绍了数据爬取、清洗、可视化及模型优化的关键技巧,帮助开发者掌握Python在数据分析中的应用,提升程序开发能力。

weixin_30379531的博客 411

通信工程学习:什么是ASK振幅键控、FSK频移键控、PSK相移键控

ASK、FSK和PSK是三种基础数字调制技术。ASK通过改变载波振幅传输信息,实现简单但抗干扰弱;FSK利用频率变化传递信号,抗干扰较强但频谱利用率一般;PSK通过相位变化编码数据,抗干扰和频谱效率最优但同步要求高。三种技术各具特点,分别适用于不同通信场景:ASK用于低速光纤通信,FSK常见于无线广播,PSK则广泛应用于Wi-Fi、蓝牙等现代通信系统。

limengshi138392的博客 8719

Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum (数位dp求和)

题目链接:https://codeforces.com/contest/1073/problem/E 题目大意:给定一个区间[l,r],需要求出区间[l,r]内符合数位上的不同数字个数不超过k个的数的和(并且模998244353) 例如求区间[10,50],k=1,答案为ans=(11+22+33+44)%998244353=110. Examples input Copy ...

weixin_30565327的博客 411

01-系统技术架构师必备——软件架构设计基础与核心概念

摘要 本文系统阐述了软件架构设计的核心概念与方法论,重点涵盖以下内容:1)软件架构的四大要素(构件、连接件、约束、配置)及其边界划分;2)Garlan & Shaw五大架构风格(数据流、调用/返回、独立构件、虚拟机、仓库)的典型应用场景;3)基于电商库存系统的架构选型实战案例,展示如何根据业务需求(高并发、最终一致性)选择事件驱动架构配合Saga模式;4)介绍ABSD、DSSA等主流架构方法论及ISO/IEEE标准体系。文章融合金融与互联网领域的架构实践经验,为技术架构师提供系统性的知识框架和决策参考。

模界 | AI工程化实践者 181

Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum

应该是我做过最复杂的数位dp了 做之前已经忘了数位dp是啥了,找了一个博客复习下 然后这题不同的是求的是和,而不是个数 所以需要维护更多的元素 dp[i][j]val, count, remain 代表讨论到i位置,已经有mask(j) (0-9分别2进制表示)时他的剩下位数的总值,计数,以及前面全前导0的总值(相当于要分开计算) #include <iostream> #i...

diankeng5481的博客 172

《C/C++等级考试(1~8级)历届真题解析》专栏总目录

中国电子学会《全国青少年软件编程等级考试》C/C++编程(1~8级)历届真题解析。订阅后可阅读专栏内所有真题解析,真题持续更新中!

人生就是一个不断学习的过程 2万+

基于业务目标的Agent自动化评测体系设计:超越准确率的有效性衡量

我们还是以电商全链路服务Agent我们还是以电商全链路服务Agent。

AI架构全栈开发实战笔记 318

Educational Codeforces Round 53 (Rated for Div. 2)题解

Educational Codeforces Round 53 (Rated for Div. 2A. Diverse Substring ) A. Diverse Substring 题目大意:定义长度为n的字符串是一个多样化的字符串:当且仅当这个字符串没有一种字符数目严格大于n/2 找出字符串s的一个多样化子串 |s|&amp;amp;amp;amp;amp;amp;amp;lt;=1000 分析:可以直接预处理前缀和数组,暴力O(∣s∣2σ)O(...

STcyclone的博客 1345

QT上位机开发(掌握一点c++基础)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 c++是c语言的补充和扩展,本身的语法构成也是在一直迭代中。相信很多同学上大学读书的时候,或多或少对c语言有所了解,对它的变量、指针、函数也应该不陌生。既然大家都有c语言基础的话,那么在这方面稍微拓展一下的话,就可以学会c++了。当然c++本身的内容很多,很多方面还很琐碎,但我们学习的时候还是应该把精力放在那些经常使用到的语法上面。

嵌入式-老费,一个分享专业嵌入式知识的blog 1131

【Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum】 数位DP

E. Segment Sum 题意 题意很简单,求l到r之间的所有数中不同数位数不超过k的数之和题意很简单,求l到r之间的所有数中不同数位数不超过k的数之和题意很简单,求l到r之间的所有数中不同数位数不超过k的数之和 1&amp;amp;lt;=l&amp;amp;lt;=r&amp;amp;lt;=1018&amp;nbsp;&amp;nbsp;1&amp;amp;lt;=k&amp;amp;lt;=101&amp;amp;lt;=l&amp

lajiyuan的博客 236

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

E. Segment Sum (数位dp)Educational Codeforces Round 53 (Rated for Div. 2)

题目链接:http://codeforces.com/contest/1073/problem/E 参考链接:https://blog.csdn.net/qq_38677814/article/details/83415782 题意:给出l,r,k,在范围 [ l , r ] 内找出数字(满足每个数字的数位只能有k个不同)的总和,例如:k=2,那么101满足只有两种不同的数字。   题解:...

Jiandong 212

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数位dp:Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum

给出上下界,让你求出其中满足条件:不同的数字的数量不超过k个的数字的总和,答案模998244353,比如123里不同的数字个数为3,113里不同的数字个数为2,111里不同的数字个数为1。 跟普通的数位dp相比,这道题的不同在于是求总和,不是求数字的个数,但我们可以在求数字个数的基础上再进行求和,以下可以看代码注释。 #include<iostream> #includ...

weixin_30416871的博客 108

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深挖C++:类和对象(中)

(先进后出)

xys_678的博客 237

选型笔记:Type‑C 扩展坞方案评估|DP1.4 转 HDMI2.0 桥接芯片 GSV2201S@ACP

本文记录 GSV2201S 这款 DP1.4a 转 HDMI2.0 桥接芯片评估,梳理视频、HDCP、PD 集成能力,总结 Type‑C 转接 Dongle、扩展坞方案的适配边界,以及差分走线、PD 时序、HDCP 握手等高频调试问题,为 C 口视频转接方案选型提供参考。

ACP广源盛的博客 220

C++移动构造函数详解

移动构造函数是C++11引入的一种特殊构造函数,用于从临时对象(右值)"窃取"资源来初始化新对象,而不是进行昂贵的深拷贝。char* data;public:// 移动构造函数:参数是右值引用 &&// 关键:把源对象的资源置空。

拒绝AI文,努力在AI时代写出感动人心的好文章 390

ThunderKittens 深度解析:一个不基于 MLIR 的 C++ 模板 GPU DSL

Triton 是"让更多人能写 GPU kernel",ThunderKittens 是"让会写的人写得更爽"。前者用 MLIR 换易用性,后者用 C++ 模板换可控性。它们不是替代关系,而是覆盖了 GPU 编程光谱的两端。ThunderKittens 的出现,本质上是对"GPU DSL 必须基于 MLIR"这一默认假设的挑战。编译期类型系统本身就可以是一个强大的 DSL 基础设施,不需要中间 IR,不需要黑盒 pass,也能实现 tile 级抽象和零运行时开销。

Maxwell_Newton的博客 336

【C语言】字符与字符串函数

C语言中字符串为以\0结尾的字符数组,标准库函数基于此约定。本文解析字符串内存布局,详解ctype.h与string.h中字符分类、长度计算、拷贝、比较等函数的使用要点,强调长度判断与越界风险,最后通过命令行待办事项示例整合fgets、sscanf、strncpy、strcmp,展示实际应用中的关键细节。

记录在学习过程中学到的知识 343

C++ 多态详解:作用、原理与实战用法

多态是C++面向对象的核心特性,通过虚函数实现运行期动态绑定,使同一接口在不同对象上表现出不同行为。其核心作用包括统一接口、提升可扩展性、降低耦合、支持运行时分派与批量处理。实现依赖虚函数表(vtable)和虚指针(vptr),需注意虚析构函数、对象切片等陷阱。相比编译期多态(模板),运行期多态灵活性高但有调用开销。合理结合两者,可兼顾代码的灵活性与性能,是构建可扩展、低耦合系统的关键。

2402_85743155的博客 377

C++ 函数模版

模板参数:● template ,T 就是类型占位符,名字可以自定义,习惯用T● 占位符可以在函数返回值、形参、函数内部当作类型使用使用要点模板代码一般写在头文件:编译器需要看到完整模板源码,才能在每个编译单元完成实例化全局函数、类内成员函数都可以写成模板实例化发生在编译阶段,不是运行时隐式实例化:调用时编译器自动推导实参类型,生成对应版本函数。

2501_94041724的博客 304

C++ 运行时多态与虚函数机制全面剖析【面试重点】

构成C++ 运行时多态必须是基类的指针或者引用调用虚函数。被调用的函数必须是虚函数,并且派生类必须对该虚函数完成重写/覆盖(Override)。只有基类的指针或引用才能既指向基类对象,又指向派生类对象(切片机制);而只有完成了虚函数重写,派生类与基类才具备不同的函数行为,达到“指向谁就调用谁”的效果。在类成员函数的前面加上virtual关键字修饰,该成员函数就成为了虚函数。public:// 成员函数前加 virtual 修饰,声明为虚函数。

Fuyo_0209的博客 436

#SQLite 数据库笔记一:(概念 / 终端指令 / SQL 语句 / C 编程 / 回调函数)

数据库 = 数据的仓库,假设数据是海量。能力说明存储数据持久化保存,程序退出数据还在统计数据、分组、排序数据管理增、删、改、查(CRUD)嵌入式设备上也会用数据库(单片机网关、路由器、工业 HMI 都常见),因为 sqlite 体积小、无需服务进程、单文件即可。数据库 = 库 > 表 > 记录(行) > 字段(列)sqlite3 = 开源、C 写的、单文件、免安装、最多 2T 的嵌入式关系型数据库。

lwq20051110的博客 203

C 语言 malloc() 详解与实战 Demo

本文详解C语言malloc()函数,涵盖其语法、内存原理及实战应用。通过动态整数、数组、结构体与链表的Demo,演示如何安全申请、使用与释放内存,强调避免内存泄漏与空指针检查的重要性,帮助开发者掌握动态内存管理核心技能。

tangPHP的博客 366
上一篇: Educational Codeforces Round 50 (Rated for Div. 2) C. Classy Numbers 题解 数位dp
下一篇: Codeforces Round 946 (Div. 3) F. Cutting Game 题解 模拟
bbc_ouo
博客等级 码龄3年 2096粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值