参考博客:http://www.cnblogs.com/Sunshine-tcf/p/5737627.html

  说实话,官方博客的推导公式看不懂。。。只能按照别人一样打表找规律了。。。但是打表以后其实也不是很好看出规律的。。。而且这个表都写了半天233。。。(真是太弱了= =)为了打表,我们应当先知道k数列必须是不递减的才能满足值不为0,因此我们可以用递归来写这个表(类似于dfs)。

  AC代码如下:

 #include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
typedef long long ll;
const int mod = ; int qpow(int a,int b)
{
int ans = ;
while(b)
{
if(b & ) ans = 1LL * ans * a % mod;
b >>= ;
a = 1LL * a * a % mod;
}
return ans;
} int inv(int p)
{
return qpow(p,mod-);
} int main()
{
int T;scanf("%d",&T);
while(T--)
{
int n,m;scanf("%d%d",&n,&m);
int ans = qpow(m,n+);
ans = ((ans - ) % mod + mod) % mod;
ans = 1LL * ans * inv(m-) % mod;
printf("%d\n",ans);
}
}

  打表代码如下:

 #include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std; int c[][];
//int n,m; void init()
{
c[][] = c[][] = c[][] = ;
for(int i=;i<=;i++)
{
c[i][] = c[i][i] = ;
for(int j=;j<i;j++)
{
c[i][j] = c[i-][j-] + c[i-][j];
}
}
} int ans = ,a[];
void solve(int pos,int now,int n,int m)
{
a[pos] = now;
if(pos == m)
{
int t = ;
for(int i=;i<=m;i++) t *= c[a[i]][a[i-]];
ans += t;
return;
}
for(int i=now;i<=n;i++)
{
solve(pos+,i,n,m);
}
} void getAns(int n,int m)
{
memset(a,,sizeof(a));
ans = ;
for(int i=;i<=n;i++)
{
solve(,i,n,m);
}
} int main()
{
init();
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
getAns(i,j);
printf("f(%d,%d)=%d ",i,j,ans);
}
puts("");
}
/*while(scanf("%d%d",&n,&m)==2)
{
memset(a,0,sizeof(a));
ans = 0;
for(int i=0;i<=n;i++)
{
solve(1,i);
}
printf("%d\n",ans);
}*/
}

  总感觉,,数论的题目都好难想到思路啊= =。。

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. HDU4869:Turn the pokers(快速幂求逆元+组合数)

    题意: 给出n次翻转和m张牌,牌相同且一开始背面向上,输入n个数xi,表示xi张牌翻转,问最后得到的牌的情况的总数. 思路: 首先我们可以假设一开始牌背面状态为0,正面则为1,最后即是求ΣC(m,k) ...

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

    A Boring Question 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5793 Description Input The first l ...

  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(2016第六场多校)

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

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

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

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

随机推荐

  1. Power BI 报表服务器中的行级别安全性 (RLS)

    在 Power BI Desktop 中定义角色和规则 你可以在 Power BI Desktop 中定义角色和规则. 发布到 Power BI 时,它还会发布角色定义. 若要定义安全角色,请执行以下 ...

  2. SQLite数据库_c/s架构的心得

    1.使用是Navicat Premium软件, Microsoft Windows版本. 2.选择SQLite并新建数据库: 3.将建好的SQLite数据库,放到新建的项目的debug文件下中, 并在 ...

  3. Aveva Marine 新建项目001

    1# 项目代号定义,三个字符,例如Abc 2# 新建文件夹,命名为“Abc” 3# 新建文件名为evars.bat文件,放到项目文件夹的根目录 内容为: SET Abc000=项目文件夹路径\Abc0 ...

  4. 服务端相关知识学习(一)之什么是zookeeper

    什么是zookeeper zookeeper是分布式协调服务,可以在分布式系统中共享配置.协调锁资源.提供命名服务那分布式协调服务又是个什么东西呢?首先我们来看“协调”是什么意思.在一个并发的环境里, ...

  5. Ubuntu 忘记系统登录密码,如何修改密码

    Ubuntu 忘记系统登录密码,如何修改密码. 1.重新启动,按ESC键进入Boot Menu,选择recovery mode(一般是第二个选项). 2.在#号提示符下用cat /etc/shadow ...

  6. O050、Create Volume 操作 (Part I)

    参考https://www.cnblogs.com/CloudMan6/p/5603312.html   前面已经学习了Cinder的架构和相关组件,从本节开始详细分析 Cinder 的各种操作,首先 ...

  7. Unknown column '字段名' in 'field list' 错误解决方案

    当后台报这个错误的时候,说明实体类中的字段名出错了,解决方案: 1,检查数据库中的字段名与实体类中的字段名是否一致,特别要注意单词字母, 2,检查数据库中的字段是否与实体类中的字段一致.比如数据库中没 ...

  8. 十大排序C语言实现

    #include<stdio.h> #include<stdlib.h> void bubbleSort(int arr[],int size); void Selection ...

  9. Jmeter (二) 参数化

    一.数据 用户 参数化 1.添加 用户参数 添加——>前置处理器 ——>用户参数 2.设置 目标参数 3.变量代替 ${name} 4.线程组 设置循环次数,查看结果数中查看结果 thre ...

  10. Ubuntu 18.04 手动升级内核

    一般情况下,系统正常更新,会自动升级内核到可用的最新版. 查看已安装的内核 $ sudo dpkg -l | grep linux-image 查看当前使用的内核 $ sudo uname -r 查看 ...