题目大意

给定一个 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的更多相关文章

  1. 题解 CF520E 【Pluses everywhere】

    题目链接 ps:可能组合数一不小心打错了,请发现的大佬提出,谢谢. 我们来讨论每一位数$a_{i}$被算了多少次. 总共有$n-1$个空位可以放$'+'$所以,$a_{i}$左边有$i-1$个空位,右 ...

  2. Solution -「CF520E」Pluses everywhere

    Step 1. 转化一步题目:考虑有 \(n\) 个小球,每个小球有 \(a_i\) 的价值,\(m\) 个板子,把板子插进小球间的空隙,且不能插在第 \(1\) 个球之前与第 \(n\) 个球之后. ...

  3. 【CF521C】【排列组合】Pluses everywhere

    Vasya is sitting on an extremely boring math class. To have fun, he took a piece of paper and wrote ...

  4. 【CodeForces 520E】Pluses everywhere

    题意 n个数里插入k个+号,所有式子的和是多少(取模1000000007) (0 ≤ k < n ≤ 105). 分析 1.求答案,考虑每个数作为i位数(可为答案贡献10的i-1次方,个位i=1 ...

  5. Codeforces Round #295 (Div. 1) C. Pluses everywhere

    昨天ZZD大神邀请我做一道题,说这题很有趣啊. 哇,然后我被虐了. Orz ZZD 题目大意: 你有一个长度为n的'0-9'串,你要在其中加入k个'+'号,每种方案就会形成一个算式,算式算出来的值记做 ...

  6. 【CF521C】Pluses everywhere(贡献)

    题意:有一个长为n的数字字符串,要求其中插入k个加号,求所有合法表达式的和之和 0<=k<n<=1e5 思路:参考官方题解,讲的很好很清楚 字符串下标从0开始 考虑第i位d[i]的贡 ...

  7. CodeForces-520E Pluses everywhere

    题目描述 给出一个长度为 \(n\) 的字符串,给出一个非负整数 \(k\),要求给这个字符串中间添加 \(k\) 个$\(+\)'号,变成一个表 达式,比如"\(1000101\)&quo ...

  8. Educational Codeforces Round 90 (Rated for Div. 2) C. Pluses and Minuses(差分)

    题目链接:https://codeforces.com/contest/1373/problem/C 题意 给出一个只含有 $+$ 或 $-$ 的字符串 $s$,按如下伪代码进行操作: res = 0 ...

  9. Jquery.cookie.js 源码和使用方法

    jquery.cookie.js源码和使用方法 jQuery操作cookie的插件,大概的使用方法如下 $.cookie(‘the_cookie’); //读取Cookie值$.cookie(’the ...

随机推荐

  1. item 7:当创建对象的时候,区分()和{}的使用

    本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 从不同的角度来看,在C++11中,对象初始化拥有多种语法选择,这体 ...

  2. Webpack 2 视频教程 003 - Webpack 项目初始化

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  3. Centos下内网DNS主从环境部署记录

    一.DNS是什么?DNS(Domain Name System),即域名系统.它使用层次结构的命名系统,将域名和IP地址相互映射,形成一个分布式数据库系统. DNS采用C-S架构,服务器端工作在UDP ...

  4. Beta阶段敏捷冲刺二

    一.举行站立式会议 1.当天站立式会议照片一张 2.团队成员报告 林楚虹 (1) 昨天已完成的工作:连接上数据库 (2) 今天计划完成的工作:修改学习界面单词获取 (3) 工作中遇到的困难:虽然前天询 ...

  5. pandas聚合aggregate

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/5/24 15:03 # @Author : zhang chao # @Fi ...

  6. Kivy 中文教程 实例入门 简易画板 (Simple Paint App):3. 随机颜色及清除按钮

    1. 随机颜色 通过前面的教程,咪博士已经带大家实现了画板的绘图功能.但是,现在画板只能画出黄色的图案,还十分单调,接下来咪博士就教大家,如何使用随机颜色,让画板变得五彩斑斓. 改进后的代码如下: f ...

  7. Test Scenarios for sending emails

    (test cases for composing or validating emails are not included)(make sure to use dummy email addres ...

  8. double转换为二进制

    arctan 在verilog 里是1qn或2qn格式,所以要把浮点数转换成1qn格式 1.dec2bin(十进制整数变为二进制) Convert decimal to binary number i ...

  9. Beyond Compare 4过期

    试用期到期操作:找到beyond Compare 4文件夹下面的BCUnrar.dll,将其删掉或者重命名,再重新打开接着使用!

  10. Tomcat server.xml中Connector配置参数详解

    Tomcat中Connector常用配置 Tomcat中server.xml有些配置信息是需要我们了解的,最起码知道如何进行简单的调试. <Connector port="8080&q ...