CodeForces 520E Pluses everywhere
来源:互联网 发布:淘宝售假进货凭证截图 编辑:程序博客网 时间:2024/06/05 04:38
传送门:http://codeforces.com/problemset/problem/520/E
有一串n个数,在n个数中插入k个加号,拆成k+1个数,求着n*(k+1)的数的和是多少
当然,暴力枚举是不可以的hhh,所以要考虑别的思路
对于一个数12345相当于1*10^4+2*10^3+3*10^1+4*10^0
所以只要考虑每一个数在每一位上的次数
从低到高分别为1~n位
则每一位可以充当的是第1~i-1位,再通过组合数计算总数,当然不合法的情况用组合数为0干掉就好
然后公式的话
就酱
然后,会遇到两个问题,一个是组合数取模
具体方法以后再放链接
二是优化的问题,要预处理sigma(10^(j-1)*C(n-j-1,k-1))否则就是O(n^2)的算法,预处理的话是O(n)的
代码如下:
#include<cstdio>#include<cstring>#define MOD 1000000007using namespace std;int n,k;long long ans=0;int s[100005];long long t[100005];long long fact[100005];long long f[100005];long long inv[100005];long long d[100005];char op;void getfact(){fact[0]=fact[1]=inv[0]=inv[1]=f[0]=f[1]=1; for (int i=2;i<=n;i++){fact[i]=fact[i-1]*i%MOD;f[i]=(MOD-MOD/i)*f[MOD%i]%MOD;inv[i]=inv[i-1]*f[i]%MOD;}}long long C(int n,int m){if (m>n || m<0){return 0;}return fact[n]*inv[m]%MOD*inv[n-m]%MOD;}int main(){scanf("%d%d",&n,&k);getchar();t[0]=1;for (int i=1;i<=n;i++){t[i]=(t[i-1]*10)%MOD;}if (k){for (int i=n;i;i--){op=getchar();s[i]=op-'0';}d[0]=0;getfact();for (int i=1;i<=n;i++){d[i]=d[i-1]+t[i-1]*C(n-i-1,k-1);d[i]%=MOD; }ans=0;for (int i=1;i<=n;i++){ans+=s[i]*((t[i-1]*C(n-i,k)%MOD+d[i-1])%MOD);ans%=MOD;}}else{for (int i=1;i<=n;i++){op=getchar();s[i]=op-'0';}ans=0;for (int i=1;i<=n;i++){ans+=s[i]*t[n-i];ans%=MOD;}}printf("%I64d\n",ans);return 0;}
0 0
- codeforces 520E Pluses everywhere
- CodeForces 520E Pluses everywhere
- Codeforces 520E. Pluses everywhere 数学
- codeforces 520E Pluses everywhere (数学)
- codeforces 520E Pluses everywhere (数学题)
- Codeforces 520E/521C Pluses everywhere
- Codeforces 520E Pluses everywhere (组合+逆元+规律)
- CodeForces 520E. Pluses everywhere 字符串,组合数学
- Codeforces Round #295 (Div. 2) E. Pluses everywhere
- #295 (div.2) E.Pluses everywhere
- 【Codeforces】 Codeforces Round #295 (Div. 1) Pluses everywhere
- 【组合数学】 Codeforces Round #295 (Div. 1) C - Pluses everywhere
- Codeforces Round #295 (Div. 1) C. Pluses everywhere
- Codeforces Round #295 (Div. 1) C. Pluses everywhere (组合数学+乘法逆元)
- CodeForces 701C They Are Everywhere
- codeforces 701C They Are Everywhere(尺取法)
- Codeforces Round #364 div.2 C. They Are Everywhere 【尺追法】
- Codeforces #364(Div.2)C.They Are Everywhere【思维】
- struts2中内置校验器不起作用可能原因
- JAVA简易WEB服务器(二)
- 我所知道的经济学
- 深入探讨javascript函数式编程
- 程序员面试金典 2.4 链表分割
- CodeForces 520E Pluses everywhere
- Activiti教程二
- ZOJ 3332Strange Country II(图论)
- 关于WaitForMultipleObjects函数监测事件状态的问题
- word目录编辑
- js 创建对象的几种方式
- 1032. 挖掘机技术哪家强(20)
- 台湾大学林轩田老师机器学习技法:内容简介
- Java Reflection(六):Getters and Setters