参考博客: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. List与Set区别

    List: 元素有序放入,元素可重复 Set: 元素无序保存,元素不可重复(通过==判断,非基本类型判断的是引用地址),因为set是无序的,故只能通过迭代器循环.ps:说是无序,但是其实set中的元素 ...

  2. js循环遍历性能

    定length for循环 (有length) 不定length for循环(使用数组length) 不定length for循环(判断数组length是否存在) forEach(Array自带,对某 ...

  3. O026、Nova组件详解

    参考https://www.cnblogs.com/CloudMan6/p/5436855.html   本节开始,我们将详细讲解 Nova 的各个子服务.   前面架构概览一节知道 Nova 有若干 ...

  4. redis的数据结构及操作命令

    一.字符串: redis中最为基础的存储类型,以二进制存储,value的字符串最多512M,Key做多1024字节. 常用命令:赋值(set).取值(get).删除(del),递增(incr/incr ...

  5. 文件下载不可以使用ajax

    参看网站:https://blog.csdn.net/fan510988896/article/details/71520390 总结一下为什么下载请求不能放在ajax里发送: 原因:因为respon ...

  6. Spring MVC之@RequestParam @RequestBody @RequestHeader 等详

    Spring MVC之@RequestParam @RequestBody @RequestHeader 等详     引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇 ...

  7. Linux服务器性能检查教程

    一.uptime命令 这个命令可以快速查看机器的负载情况.在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量.这些数据可以让我们对系统资源使用有一个宏观 ...

  8. Lua游戏逆向及破解方法介绍

    Lua游戏逆向及破解方法介绍   背景介绍 随着手游的发展,越来越多的Cocos-lua端游开发者转移到手游平台.Lua脚本编写逻辑的手游也是越来越多,如梦幻西游.刀塔传奇.开心消消乐.游龙英雄.奇迹 ...

  9. 【2017-04-19】C#中String.Format格式使用

    例子: int a =9; string s= a.ToString("000"); Console.Write(s); 打印出来就是009 C#格式化数值结果表 字符 说明 示例 ...

  10. 十,StatefulSet简介及简单使用

    目录 StatefulSet简介 为什么要用statefulset控制器 简单测试 使用 StatefulSet 创建基础的PV StatefulSet 清单 statefulset管理pod的启停顺 ...