CF520E Pluses everywhere
题目大意
给定一个 n 位的十进制数,可以在数字之间加 k 个' + ',得到一个式子,求每种方案的这个式子的和
分析:
容易想到将式子的和转化为每个数字的贡献值之和。
设数组a为:a(n-1),a(n-2),...,a(0); 对于每一个位置,我们可以以其右面第一个放加号的位置为界,确定它的数位和贡献值。
对于a(k),循环0~k-1;再加上k的贡献值。 发现贡献值可以预处理。 f[y]表示i=0~y循环,10^i x C(n-i-2,m-1)的值。
公式就是:

附代码:
#include<bits/stdc++.h>
#define ll long long
#define int long long
using namespace std;
const int N=1e5+;
const int mod=1e9+;
ll a[N],b[N];
int n,m;
char c;
ll fac[N],ifac[N];
ll f[N];
ll qm(int x,int y)
{
ll base=x%mod;
ll ans=;
while(y)
{
if(y&) ans=(ans*base)%mod;
base=(base*base)%mod;
y>>=;
}
return ans%mod;
}
ll zu(int x,int y)
{
if(x<||x<y||y<) return ;
ll ret=fac[x]*ifac[y]%mod*ifac[x-y]%mod;
return ret%mod;
}
ll ans=;
signed main()
{
scanf("%lld%lld",&n,&m);
for(int i=;i<=n;i++)
{
cin>>c;
a[n-i]=c-'';
}
fac[]=;
ifac[]=;
for(int i=;i<=n;i++)
fac[i]=(fac[i-]*i)%mod;
ifac[n]=qm(fac[n],mod-)%mod;
for(int i=n-;i>=;i--)
ifac[i]=(ifac[i+]*(i+))%mod;
f[]=zu(n-,m-);
for(int i=;i<=n;i++)
f[i]=(f[i-]+qm(,i)*zu(n-i-,m-)%mod)%mod;
for(int i=;i<=n-;i++)
if(i) ans=(ans+a[i]*f[i-]%mod+a[i]*qm(,i)%mod*zu(n-i-,m)%mod)%mod;
else ans=(ans+a[i]*zu(n-,m)%mod)%mod;
printf("%lld",ans%mod);
return ;
}
CF520E Pluses everywhere的更多相关文章
- 题解 CF520E 【Pluses everywhere】
题目链接 ps:可能组合数一不小心打错了,请发现的大佬提出,谢谢. 我们来讨论每一位数$a_{i}$被算了多少次. 总共有$n-1$个空位可以放$'+'$所以,$a_{i}$左边有$i-1$个空位,右 ...
- Solution -「CF520E」Pluses everywhere
Step 1. 转化一步题目:考虑有 \(n\) 个小球,每个小球有 \(a_i\) 的价值,\(m\) 个板子,把板子插进小球间的空隙,且不能插在第 \(1\) 个球之前与第 \(n\) 个球之后. ...
- 【CF521C】【排列组合】Pluses everywhere
Vasya is sitting on an extremely boring math class. To have fun, he took a piece of paper and wrote ...
- 【CodeForces 520E】Pluses everywhere
题意 n个数里插入k个+号,所有式子的和是多少(取模1000000007) (0 ≤ k < n ≤ 105). 分析 1.求答案,考虑每个数作为i位数(可为答案贡献10的i-1次方,个位i=1 ...
- Codeforces Round #295 (Div. 1) C. Pluses everywhere
昨天ZZD大神邀请我做一道题,说这题很有趣啊. 哇,然后我被虐了. Orz ZZD 题目大意: 你有一个长度为n的'0-9'串,你要在其中加入k个'+'号,每种方案就会形成一个算式,算式算出来的值记做 ...
- 【CF521C】Pluses everywhere(贡献)
题意:有一个长为n的数字字符串,要求其中插入k个加号,求所有合法表达式的和之和 0<=k<n<=1e5 思路:参考官方题解,讲的很好很清楚 字符串下标从0开始 考虑第i位d[i]的贡 ...
- CodeForces-520E Pluses everywhere
题目描述 给出一个长度为 \(n\) 的字符串,给出一个非负整数 \(k\),要求给这个字符串中间添加 \(k\) 个$\(+\)'号,变成一个表 达式,比如"\(1000101\)&quo ...
- Educational Codeforces Round 90 (Rated for Div. 2) C. Pluses and Minuses(差分)
题目链接:https://codeforces.com/contest/1373/problem/C 题意 给出一个只含有 $+$ 或 $-$ 的字符串 $s$,按如下伪代码进行操作: res = 0 ...
- Jquery.cookie.js 源码和使用方法
jquery.cookie.js源码和使用方法 jQuery操作cookie的插件,大概的使用方法如下 $.cookie(‘the_cookie’); //读取Cookie值$.cookie(’the ...
随机推荐
- Session配置之WebApi支持
1.在WebApiConfig中建立建立HttpControllerHandler和HttpControllerRouteHandler 并覆写它 public class SessionRouteH ...
- Oracle数据库冷备份与热备份操作梳理
Oracle数据库的备份方式有冷备份和热备份两种,针对这两种备份的实施过程记录如下: 一.Oracle冷备份 概念数据库在关闭状态下完成所有物理系统文件拷贝的过程,也称脱机备份.适合于非归档模式(即n ...
- yum源使用的几个报错小总结 (例如: python2.6.6 下yum不能使用: No module named yum)
服务器上的yum突然不好使用,使用yum时有如下几个保持,解决方案如下: 1)Error: Cannot retrieve repository metadata (repomd.xml) for r ...
- oracle数据恢复方法
https://www.cnblogs.com/hqbhonker/p/3977200.html
- C. Vasya and Multisets
传送门 [http://codeforces.com/contest/1051/problem/C] 题意 给你一堆数,问是否可以分为两堆使得两堆里只出现一下的数字的种类相等,可以输出任意一种分的方式 ...
- 作业20171123 beta-review 成绩
申诉 对成绩有疑问或不同意见的同学,请在群里[@杨贵福]. 申诉时间截止2017年12月13日 17:00. 成绩 review NABCD-评论 SPEC-评论 bug found 答复 bugfi ...
- app推广及主要代码
app推广: 一.基本情况 我们把推广和调研都放在了一起,主要是调研,主要通过调查问卷和直接访问的方式,让调查的人能够看到我们app的主要功能, 然后做出评价和对此改善的意见.调 ...
- Flask-论坛开发-1-基础知识
对Flask感兴趣的,可以看下这个视频教程:http://study.163.com/course/courseLearn.htm?courseId=1004091002 1. 第一个 flask 程 ...
- MyBatis 集合操作语法范例:配合SQL的in关键字
Java语法: private String[] tagIds; MyBatis语法 <delete id="deleteByIds" parameterType=" ...
- pandas shift
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/5/24 15:03 # @Author : zhang chao # @Fi ...