CF520E Pluses everywhere 题目分析

news/2025/9/23 21:43:33/文章来源:https://www.cnblogs.com/high-sky/p/19108158

题目概述

给定一个 \(n\) 位的十进制数,可以在数字之间加恰好 \(k\)+,得到一个式子,求每种方案的这个式子的和。

\(10^9+7\) 取模,数据范围:\(1\leq n\leq 10^5\)

分析

有点意思。

不难想到设 \(f_{i,j}\) 表示前 \(i\) 个数填 \(j\) 个加号的方案和,转移是简单的,考虑在不在前面放 + 即可。

但是这不是本题的思路。

像这种求所有的全局的方案,一般考虑每一个位置对于总共答案的贡献是多少。

我们考虑从前往后的第 \(i\) 个位置,这个数填在当前分割出来的数的从前往后数第 \(j\) 位,显然 \(j\leq n - i + 1\)

那么对于当前他的数值方面的贡献为 \(a_i\times 10^j\),那么它的方案为 \(C_{n-1-(j-1)-1}^{k-1}=C_{n-j-1}^{k-1}\)

为什么是这个组合数?

\(n-1\) 是我们可选的位置,后面再 \(-1\) 是因为肯定所分割出来的数的后面有一个加号,再加上其长度为 \(j\),因此占有 \(j-1\) 个位置不能填 + 号。

那么这就引申出一个问题,当我的 \(j=n-i+1\) 时,那么我的后面是填不了 + 号的,因此此时方案为 \(C_{n-1-(j-1)}^{k}=C_{n-j}^k\)

形式化地讲就是:

\[\sum_{i=1}^n\left(10^{n-i+1}\times a_i\times C_{i-1}^{k}+\sum_{j=1}^{n-i}10^j\times a_i\times C_{n-j-1}^{k-1}\right) \]

我们注意到后面的组合数跟 \(i\) 无关,考虑先枚举 \(j\),有:

\[\sum_{j=1}^n\left(a_{n-j+1}\times 10^j\times C_{n-j}^{k}+C_{n-j}^{k-1}\sum_{i=1}^{n-j}a_i\right) \]

显然后面那一个求和是可以前缀和优化的。

代码

时间复杂度 \(\mathcal{O}(n)\)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#define int long long
#define N 100005
using namespace std;
const int mod = 1e9 + 7;
int jc[N],inv[N],sum[N],a[N];
int C(int a,int b) {if (a < 0 || b < 0 || a < b) return 0;return jc[a] * inv[b] % mod * inv[a - b] % mod;
}
signed main(){jc[0] = jc[1] = inv[0] = inv[1] = 1;for (int i = 2;i < N;i ++) jc[i] = jc[i - 1] * i % mod,inv[i] = (mod - mod / i) * inv[mod % i] % mod;for (int i = 2;i < N;i ++) inv[i] = inv[i - 1] * inv[i] % mod;int n,k;scanf("%lld%lld",&n,&k);for (int i = 1;i <= n;i ++) {char x;cin >> x;a[i] = x - '0';sum[i] = sum[i - 1] + a[i];}int ans = 0;for (int i = 1,t = 1;i <= n - k;i ++,t = t * 10 % mod) {ans = (ans + t * a[n - i + 1] % mod * C(n - i,k) % mod) % mod;ans = (ans + t * sum[n - i] % mod * C(n - i - 1,k - 1) % mod) % mod;}cout << ans;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设同行抄袭南宁网站平台

在软件领域&#xff0c;持续交付就是这样一种开发实践&#xff0c;它为所有利益相关者带来好处&#xff1a;开发、运营、测试人员和业务团队。持续交付适用于每个由软件驱动的组织&#xff1b;很难想象企业不使用软件。 它使人们受益&#xff0c;并需要人们做出改变才能更好地…

华硕路由器做网站wordpress博客不分页

四、基础可视组件 通过本节你将了解 iVX 开发中的核心—— iVX 组件的使用方法。iVX 的组件是开发应用时所必要的对象&#xff0c;通过这些对象你将快速的完成应用的开发。 在 iVX 应用开发中&#xff0c;所有交互、动画、数据都需要以组件为基础&#xff0c;通过组件之间的编…

vps网站目录是灰色的西安做推广网站设计

概述 libevent的event&#xff0c;event_callback&#xff0c;event_base除了可以用来支持套接字的自动和手动分发&#xff0c;也可用来支持定时机制&#xff0c;信号处理&#xff0e;这里&#xff0c;我们补充对定时机制&#xff0c;信号处理的分析&#xff0e; libevent中的…

网站设计与管理方向nas 做网站服务器

lucene 查询示例本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中&#xff0c;您将了解Lucene。 您将了解为什么这样的库很重要&#xff0c;然后了解Lucene中搜索的工作方式。 此外&#xff0c;您将学习如何将Lucene Search集成到您自己的应用程序中…

石家庄个人谁做网站网站建设的整体流程有哪些?

作者&#xff1a;HelloGitHub-追梦人物文中涉及的示例代码&#xff0c;已同步更新到 [HelloGitHub-Team 仓库](https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial) 博客文章的模型有一个 excerpt 字段&#xff0c;这个字段用于存储文章的摘要。目前为止&#xff…

网站正在建设 mp4vk汉化网站谁做的

&#xff08;1&#xff09;腾讯云申请 &#xff08;2&#xff09;域名控制台解析 &#xff08;3&#xff09;Nginx下载&#xff08;crt: CA certificate Chain)

南宁网站建站wordpress 升级php版本

101. 简述如何在 Kotlin 中比较两个字符串?Kotlin 语言允许多种方法来检查两个字符串是否相等。 使用比较运算符 在 Kotlin 中, == 用于检查两个对象的结构相等性。如果两个对象具有相同的值,它将返回 true: fun main(args: Array) { val str1: String = "Hell…

云南 网站建设网站中国互联网数据平台

ThreadLocal基本原理 一、定义 ThreadLocal是java中所提供的线程本地存储机制&#xff0c;可以利用改机制将数据缓存在线程内部&#xff0c;该线程可以在任意时刻、任意方法中获取数据 二、底层原理 ThreadLocal底层是通过ThreadLocalMap来实现的&#xff0c;每个Thread对象中…

java里面的IO流分为哪几种,他们的区别是什么呢

Java IO流主要可以从两个最重要的维度进行分类:流向 和 操作的数据类型。按流向分(以内存为参照物):输入流(Input Stream): 将数据从外部(如文件、网络、键盘)读入到内存中。InputStream 和 Reader 是基类。 …

ReLU函数及它的导数

ReLU 函数 ReLU(Rectified Linear Unit,修正线性单元)是目前在深度学习中最常用的激活函数。它的数学表达式非常简单: $$f(x) = \max(0, x)$$ 这意味着当输入 $x$ 大于 0 时,输出就是 $x$ 本身;当输入 $x$ 小于或…

公司网站运营方案策划做 网络网站

0 前言 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一种用于处理序列数据的神经网络。相比一般的神经网络来说&#xff0c;他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义&#xff0c;RNN就能够很好…

网站建议公司新邵县住房和城乡建设局网站

TCP协议的报文格式 TCP协议有连接&#xff0c;可靠性传输&#xff0c;面向字节流&#xff0c;全双工。 他的数据格式如图&#xff1a; 根据他的数据格式&#xff0c;在这里我们只知道 16位源端口号&#xff08;表示客户端这里的端口号&#xff09;&#xff0c;16位目的端口号&…

企业网站规划书实业公司网站建设

一、Znode分类 1、persistent_node 持久化节点 是默认类型&#xff0c;该类型节点&#xff0c;并不会随着客户端断开就会自动删除&#xff1b;zookeeper服务重启该节点也不会被删除&#xff0c;只有手动删除的时候才会删除&#xff1b;可以创建子节点&#xff1b; # create …

手机建站平台郴州网红景点

1、问题背景&#xff1a;maven使用默认settings.xml配置时&#xff0c;Idea基于pom.xml更新依赖时报错&#xff0c;有些组件下载时连接超时&#xff0c; 通过日志发下&#xff0c;去连接maven.org网站下载依赖&#xff0c;有时候肯定会超时。 2、解决办法&#xff1a;使用国外…

新开的网站建设公司如何推广专业的seo外包公司

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的字符串 s &#xff0c;它的 偶数 下标处为小写英文字母&#xff0c;奇数 下标处为数字。 定义一个函数 shift(c, x) &#xff0c;其中 c 是一个字符且 x 是一个数字&#xff0c;函数返回字母表中 c 后面第 x 个字符。 …

北京优质网站制作南通市建设局网站6

怎么通过手机照片制作视频&#xff1f;将照片做成视频并不是很难&#xff0c;可以直接在手机上进行操作&#xff0c;下面来看看是怎么操作的。方法/步骤在手机上打开清爽视频编辑器&#xff0c;有视频编辑、美拍美摄、电子相册、特效模板、动感视频、创意视频、动态字幕、视频变…

龙岩市官方网站网站风格类型是

python遍历实例总结python同时遍历数组的索引和值的实例你想在迭代一个序列的同时跟踪正在被处理的元素索引。获取索引内置的 enumerate() 函数可以很好的解决这个问题&#xff1a;>>> my_list [a, b, c]>>> for idx, val in enumerate(my_list):... print(…

手机网站特效郑州企业网站seo

原标题&#xff1a;刘总出席成都糖酒会&#xff1a;信任铸就云仓酒庄新篇章&#xff0c;共襄盛举展未来近日&#xff0c;备受瞩目的成都糖酒会盛大开幕&#xff0c;吸引了来自全国各地的业界精英和代表。在这场盛大的行业盛会上&#xff0c;云仓酒庄的刘总亲临现场。 现场&…

第一次个人编程作业-论文查重

| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience | | 这个作业要求在哪里| https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13477 | | 这…