A Boring Question

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5793

Description


![](http://images2015.cnblogs.com/blog/764119/201608/764119-20160804173305559-605626236.png)

Input


The first line of the input contains the only integer T,
Then T lines follow,the i-th line contains two integers n,m.

Output


For each n and m,output the answer in a single line.

Sample Input


2
1 2
2 3

Sample Output


3
13

Source


2016 Multi-University Training Contest 6


##题意:

用m个不大于n的数构成一个序列,对每个序列求C(ki+1,ki)的连乘积.
对所有可能的序列,累加上述连乘积.


##题解:

还是打表找的规律...(好弱啊)
f(1,2)=3; f(2,2)=7;
f(1,3)=4; f(2,3)=13;
f(1,4)=5; f(2,4)=21;
f(1,5)=6; f(2,5)=31;
......
打了个5*5的表后发现规律:(后附打表代码)
f(n,m) = f(n-1,m) + m^n;
= m^0 + m^1 + m^2 + ... + m^n; (等比数列求和)
= (1 - m^(n+1)) / (1 - m);
然后用快速幂和乘法逆元求出上式即可.

官方题解:



##代码:
``` cpp
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
#define mid(a,b) ((a+b)>>1)
#define eps 1e-8
#define maxn 2100
#define mod 1000000007
#define inf 0x3f3f3f3f
#define IN freopen("in.txt","r",stdin);
using namespace std;

LL x,y,gcd;

void ex_gcd(LL a,LL b)

{

if(!b) {x=1;y=0;gcd=a;}

else {ex_gcd(b,a%b);LL temp=x;x=y;y=temp-a/b*y;}

}

LL quickmod(LL a,LL b,LL m) {

LL ans = 1;

while(b){

if(b&1){

ans = (ansa)%m;

b--;

}

b/=2;

a = a
a%m;

}

return ans;

}

int main(int argc, char const *argv[])

{

//IN;

int t; cin >> t;
LL n, m;
while(scanf("%I64d %I64d", &n,&m) != EOF)
{
LL ans1 = quickmod(m, n+1, 1000000007LL) - 1;
LL ans2 = m - 1; ex_gcd(ans2, 1000000007LL);
while(x < 0) {
x+=1000000007LL;
y-=ans2;
} LL ans = (ans1 * x) % mod; printf("%I64d\n", ans);
} return 0;

}


####打表代码:
``` cpp
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <vector>
#define LL long long
#define mid(a,b) ((a+b)>>1)
#define eps 1e-8
#define maxn 2100
#define mod 1000000007
#define inf 0x3f3f3f3f
#define IN freopen("in.txt","r",stdin);
using namespace std; LL e[510][510];
void make(){
for(int i=0;i<510;i++)
e[i][0]=1;
for(int i=1;i<510;i++)
for(int j=1;j<510;j++)
e[i][j]=(e[i-1][j-1]+e[i-1][j])%mod;
} int n,m,ans;
void fun(int len, vector<int> cur, int last) {
if(len == m) {
int tmp = 1;
for(int i=1; i<cur.size(); i++) {
tmp *= e[cur[i]][cur[i-1]];
}
ans += tmp;
return;
} for(int i=last; i<=n; i++) {
cur.push_back(i);
fun(len+1, cur, i);
cur.pop_back();
}
} int main(int argc, char const *argv[])
{
//IN; make(); for(n=0; n<=5; n++) {
for(m=2; m<=5; m++) {
ans = 0;
vector<int> cur; cur.clear();
fun(0,cur,0);
printf("%d-%d : %d\n", n,m,ans);
}
} return 0;
}

HDU 5793 A Boring Question (找规律 : 快速幂+逆元)的更多相关文章

  1. HDU 5793 A Boring Question (找规律 : 快速幂+乘法逆元)

    A Boring Question Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  2. hdu 5187 zhx's contest [ 找规律 + 快速幂 + 快速乘法 || Java ]

    传送门 zhx's contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  3. HDU 5793 - A Boring Question

    HDU 5793 - A Boring Question题意: 计算 ( ∑(0≤K1,K2...Km≤n )∏(1≤j<m) C[Kj, Kj+1]  ) % 1000000007=? (C[ ...

  4. HDU 5793 A Boring Question ——(找规律,快速幂 + 求逆元)

    参考博客:http://www.cnblogs.com/Sunshine-tcf/p/5737627.html. 说实话,官方博客的推导公式看不懂...只能按照别人一样打表找规律了...但是打表以后其 ...

  5. HDU 5793 A Boring Question (逆元+快速幂+费马小定理) ---2016杭电多校联合第六场

    A Boring Question Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  6. hdu 5793 A Boring Question(2016第六场多校)

    A Boring Question Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  7. 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 ...

  8. ACM-ICPC 2018 焦作赛区网络预赛 G. Give Candies (打表找规律+快速幂)

    题目链接:https://nanti.jisuanke.com/t/31716 题目大意:有n个孩子和n个糖果,现在让n个孩子排成一列,一个一个发糖果,每个孩子随机挑选x个糖果给他,x>=1,直 ...

  9. noip-2006普及组-数列- 【模拟-找规律-快速幂】

    链接:https://ac.nowcoder.com/acm/contest/153/1047 来源:牛客网 题目描述 给定一个正整数k( ≤ k ≤ ),把所有k的方幂及所有有限个互不相等的k的方幂 ...

随机推荐

  1. docker-文件系统出错处理

    Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2 2018年03月17日 22: ...

  2. python基础之内置函数和匿名函数

      内置函数 学习函数以后多了很多概念,例如函数的命名空间,函数的作用域,函数的调用等等,函数的作用就是为了实现某些功能而方便以后可以调用,内置函数就是这样的一些公共的函数,被称为内置函数. 我们就一 ...

  3. Codeforces 1196C. Robot Breakout

    传送门 维护合法区域的四个边 $xa,ya,xb,yb$ 表示在以 $(xa,ya)$ 为左下角,以 $(xb,yb)$ 为右上角的矩形内的点都是合法答案 对于一个起点 $(x,y)$,如果没法往左, ...

  4. Codeforces 1216F. Wi-Fi

    传送门 这个题一眼 $dp$ 就是设 $f[i][0/1]$ 表示我们只考虑前 $i$ 个位置,并且保证覆盖了前 $i$ 个位置,当前位置 选/不选 的最小代价 考虑转移,设题目给出的字符串为 $s$ ...

  5. php enum 数字类型插入失败的解决办法

    今天遇到一个问题,我设置mysql字段 existence 为enum ,值为 ''0','1'. 当使用 php 进行查找 where existence = 1 的时候,并没有查询出什么数据. 后 ...

  6. 18、远程管理卡、戴尔划RAid

    1.配置远程管理卡: 第一个iDRAC6是远程控制卡名称 第三个LAN ...是配置远程控制卡的 下图配置结束按Esc退出 最后按Esc保存退出 2.windows配置远程管理卡: 把下载下来的软件安 ...

  7. RAID原理详解

    RAID 0(stripe,条带化存储):在RAID级别中最高的存储性能. 原理:是把连续的数据分散到多个磁盘上存取,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于他自己的那部分数据请求. ...

  8. springboot中使用filter

    通过注解的方式实现filter过滤器. 创建Filter包,并在该包下创建MyFilter 示例代码: package com.bjpowernode.springboot.filter; impor ...

  9. pmf文件

    1.首先是视频软件,其次还是DISKGENI(磁盘分区软件),当作镜像文件恢复文件到磁盘(类似ISO).2.PMF文件为主要与primarily Pegasus Mail Message Attach ...

  10. 498. Diagonal Traverse

    题目思路 题目来源 C++实现 class Solution { public: vector<int> findDiagonalOrder(vector<vector<int ...