HDU 5793 - A Boring Question
HDU 5793 - A Boring Question
题意:
计算 ( ∑(0≤K1,K2...Km≤n )∏(1≤j<m) C[Kj, Kj+1] ) % 1000000007=? (C[Kj, Kj+1] 为组合数)
分析:
利用二项式展开: (a + b) ^ n = ∑(r = 0, n) (C[n, r] * a^(n-r) * b^r )
化简:
∑(0≤K1,K2...Km≤n )∏(1≤j<m) C[Kj, Kj+1]
= ∑( Km = 0, n ) ∑( Km-1 = 0, Km ) ∑( Km-2 = 0, Km-1 )...∑( K1 = 0, K2 ) ( C[Km, Km-1] * C[Km-1, Km-2] *...*C[K2, K1] )
= ∑( Km = 0, n ) ∑( Km-1 = 0, Km )C[Km, Km-1] ∑( Km-2 = 0, Km-1 )C[Km-1, Km-2] ... ∑( K2 = 0, K3 )C[K3, K2] ∑( K1 = 0, K2)C[K2, K1] //后面的积可分别提到和式前面
= ∑( Km = 0, n ) ∑( Km-1 = 0, Km )C[Km, Km-1] ∑( Km-2 = 0, Km-1 )C[Km-1, Km-2] ... ∑( K2 = 0, K3 ) ( C[K3, K2] * 2^K2 )
// ∑( K1 = 0, K2)C[K2, K1] 为(1 + 1) ^ k2 的二项式展开
= ∑( Km = 0, n ) m ^ Km //∑( K2 = 0, K3 ) ( C[K3, K2] * 2^K2 ) 为 (1 + 2) ^ k3 的二项式展开 ,接下来依次向上化简
= ( m^(n+1) - 1 ) / ( m - 1 ) //等比数列求和公式
接下来求快速幂和逆元即可.
(博客园怎么连个公式编辑器都没有= =)
#include <iostream>
#include <cstdio>
using namespace std;
#define LL long long
const LL MOD = ;
LL PowMod(LL a, LL p, LL MOD)
{
int res = ;
while(p)
{
if(p&) res = (res * a) %MOD;
p >>= ;
a = (a * a) % MOD;
}
return res;
}
int t;
LL n,m;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld", &n, &m);
LL ans = PowMod(m, n+, MOD);
--ans;
LL inv = PowMod(m-, MOD-, MOD);
ans = (ans * inv) % MOD;
printf("%lld\n",ans);
}
}
HDU 5793 - A Boring Question的更多相关文章
- HDU 5793 A Boring Question (找规律 : 快速幂+逆元)
A Boring Question 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5793 Description Input The first l ...
- HDU 5793 A Boring Question (逆元+快速幂+费马小定理) ---2016杭电多校联合第六场
A Boring Question Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- HDU 5793 A Boring Question (找规律 : 快速幂+乘法逆元)
A Boring Question Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- hdu 5793 A Boring Question(2016第六场多校)
A Boring Question Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- HDU 5793 A Boring Question 多校训练
There are an equation. ∑0≤k1,k2,⋯km≤n∏1⩽j<m(kj+1kj)%1000000007=?∑0≤k1,k2,⋯km≤n∏1⩽j<m(kj+1kj)%1 ...
- HDU 5793 A Boring Question ——(找规律,快速幂 + 求逆元)
参考博客:http://www.cnblogs.com/Sunshine-tcf/p/5737627.html. 说实话,官方博客的推导公式看不懂...只能按照别人一样打表找规律了...但是打表以后其 ...
- 数学--数论--Hdu 5793 A Boring Question (打表+逆元)
There are an equation. ∑0≤k1,k2,⋯km≤n∏1⩽j<m(kj+1kj)%1000000007=? We define that (kj+1kj)=kj+1!kj! ...
- 多校6 1001 HDU5793 A Boring Question (推公式 等比数列求和)
题解:http://bestcoder.hdu.edu.cn/blog/ 多校6 HDU5793 A Boring Question // #pragma comment(linker, " ...
- hdu_5793_A Boring Question(打表找规律)
题目链接:hdu_5793_A Boring Question 题意: 自己看吧,说不清楚了. 题解: 打表找规律 #include<cstdio> typedef long long l ...
随机推荐
- PHP学习笔记三十七【http】
<?php print_r($_SERVER); //$_SERVER预编译变量[数组]输出请求报文,注意大小写 echo "<br/>"; foreach($_ ...
- PHP学习笔记二十八【抽象类】
<?php //定义一个抽象类.主要用来被继承 //如果一个类继承了抽象类,则它必须实现该抽象类的所有抽象方法(除非它自己也是抽象类) // abstract class Animal{ pub ...
- oracle生成随机数
UPDATE busi_chance_info t SET t.exp_amount = (SELECT floor(dbms_random.value(1, 10000000)) ...
- UIwebView的html字符串高度计算
) { webView = [[UIWebView alloc]initWithFrame:CGRectMake(, , DEVW-, webviewH)]; webView.delegate = s ...
- uva11630 or hdu2987 Cyclic antimonotonic permutations(构造水题)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Cyclic antimonotonic permutations Time Li ...
- [poj2449]Remmarguts' Date(spfa+A*)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Remmarguts' Date Time Limit: 4000MS Mem ...
- 利用glibc中锁结构的信息解决死锁问题
首先非常感谢老丁和老李同学的帮助,没有他们这个问题估计又得搞很久.遇见这个问题,真是头疼.不熟悉代码.不熟悉流程,但是领导还是把活给排下来了(实在不解),只能硬着头皮找了. 问题是这样的,cac ...
- Oracle创建主键自增表
Oracle创建主键自增表 1.创建表 create table Test_Increase( userid number(10) NOT NULL primary k ...
- WordPress插件制作教程概述
接下来的一段时间里,开始为大家讲解WordPress插件制作系列教程,这篇主要是对WordPress插件的一些介绍和说明,还有一些我们需要注意的地方,以及需要掌握的知识. WordPress插件允许你 ...
- CPLD和FPGA的区别(转)
原文:http://tvb2058.spaces.eepw.com.cn/articles/article/item/15358 本文重点从CPLD的结构来讲的,从而说明其与FPGA的区别 ----- ...