hdu 5106 同余定理+组合数学+快速幂
来源:互联网 发布:魔兽中机械宠物矩阵 编辑:程序博客网 时间:2024/05/21 19:29
首先要取模,就要用到同余模定理,具体不细讲,只是在中间过程取模,防止溢出
在统计时考虑,逐位进行,因为不考虑数本身,所以每当遇到1时,考虑后面还需要n个1,还剩多少m位,所以就有c(m,n)个数,因为这些数的前缀相同,所以最终结果可以通过前缀*个数获得这部分的和,然后考虑每个位上是1的情况是c(m-1,n-1),也就是当前位固定为1,其他位任意选的情况数,那么他们的和就是(2^(n+1)-1)*c(m-1,n-1),快速幂只是在求幂的时候的优化,也可以提前打好表,效率更高
ac代码如下:
#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#define MOD 1000000007#define MAX 1007using namespace std;typedef long long LL;LL c[MAX][MAX];void init ( ){ c[0][0] = 1; for ( int i = 1 ; i <= 1000 ; i++ ) for ( int j = 0 ; j <= i ; j++ ) if ( j== 0 || j == i ) c[i][j] = 1; else c[i][j] = (c[i-1][j-1] + c[i-1][j])%MOD;}char s[MAX];int n;LL pow ( LL n ){ if ( n == 0L ) return 1L; LL temp = pow ( n>>1 ); if ( n&1 ) return temp*temp%MOD*2%MOD; else return temp*temp%MOD;}int main ( ){ init(); while ( ~scanf ( "%d" , &n ) ) { LL ans = 0; scanf ( "%s" , s+1 ); LL len = strlen ( s+1 ); LL sum = 0; LL pre = 0; for ( LL i = 1 ; i <= len ; i++ ) { if ( s[i] == '1' ) { LL pos = (pow ( len-i )+MOD-1)%MOD; if ( sum == n ) ans = ( ans + pre )%MOD; if ( sum < n && len-i-1 >= n-sum-1 ) ans += c[len-i-1][n-sum-1]*pos%MOD, ans += c[len-i][n-sum]*pre%MOD; ans %= MOD; sum++; pre = (pre + (pos+1)%MOD)%MOD; } } ans = ( ans + MOD )%MOD; printf ( "%I64d\n" , ans ); }}
0 0
- hdu 5106 同余定理+组合数学+快速幂
- 数数 (数学)(快速幂+同余定理)
- hdu 2035 人见人爱A^B(同余定理+快速幂)
- 快速幂+同余定理
- 同余定理 + 快速幂
- 快速幂及同余定理
- Rightmost Digit(快速幂+同余定理)
- Divisible [数学]同余定理
- HDU 1163 Eddy's digital Roots 【快速幂+同于定理 || 余九定理】
- HDU 2674 N!Again【数学&&同余定理】
- HDU 4704 Sum(费马小定理,组合数学,快速幂)
- HDU-2817,同余定理+快速幂取模,水过~
- hdu 1573 同余定理
- HDU 4506 小明系列故事——师兄帮帮忙【思维 快速幂 同余定理】
- poj 1995 Raising Modulo Numbers(同余定理+快速幂)
- POJ 1995 Raising Modulo Numbers 【快速幂&&同余定理】
- POJ 1995 Raising Modulo Numbers(快速幂,同余定理)
- NYOJ88汉诺塔(一)(快速幂&同余定理)
- 【读书笔记】从现在开始就写博客
- USACO6.3.3 Cowcycles(cowcycle)
- HDU 3853 LOOPS(概率dp求期望啊)
- 计算机网络(2)——电路交换 报文交换 分组交换
- matlab中如何创建使用构架数组?
- hdu 5106 同余定理+组合数学+快速幂
- 初识Servlet和JSP
- Linux快捷键
- (十二)UITableView的基本使用
- No XPathFctory implementation found for the object model: http://java.sun.com/jaxp/xpath/dom
- Maven的POM详解(三)
- 2015年2月5号工作日志----------------赵鑫
- 工作日志
- MPlayer编解码开发指导