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

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

  AC代码如下:

  1. #include <stdio.h>
  2. #include <algorithm>
  3. #include <string.h>
  4. using namespace std;
  5. typedef long long ll;
  6. const int mod = ;
  7.  
  8. int qpow(int a,int b)
  9. {
  10. int ans = ;
  11. while(b)
  12. {
  13. if(b & ) ans = 1LL * ans * a % mod;
  14. b >>= ;
  15. a = 1LL * a * a % mod;
  16. }
  17. return ans;
  18. }
  19.  
  20. int inv(int p)
  21. {
  22. return qpow(p,mod-);
  23. }
  24.  
  25. int main()
  26. {
  27. int T;scanf("%d",&T);
  28. while(T--)
  29. {
  30. int n,m;scanf("%d%d",&n,&m);
  31. int ans = qpow(m,n+);
  32. ans = ((ans - ) % mod + mod) % mod;
  33. ans = 1LL * ans * inv(m-) % mod;
  34. printf("%d\n",ans);
  35. }
  36. }

  打表代码如下:

  1. #include <stdio.h>
  2. #include <algorithm>
  3. #include <string.h>
  4. using namespace std;
  5.  
  6. int c[][];
  7. //int n,m;
  8.  
  9. void init()
  10. {
  11. c[][] = c[][] = c[][] = ;
  12. for(int i=;i<=;i++)
  13. {
  14. c[i][] = c[i][i] = ;
  15. for(int j=;j<i;j++)
  16. {
  17. c[i][j] = c[i-][j-] + c[i-][j];
  18. }
  19. }
  20. }
  21.  
  22. int ans = ,a[];
  23. void solve(int pos,int now,int n,int m)
  24. {
  25. a[pos] = now;
  26. if(pos == m)
  27. {
  28. int t = ;
  29. for(int i=;i<=m;i++) t *= c[a[i]][a[i-]];
  30. ans += t;
  31. return;
  32. }
  33. for(int i=now;i<=n;i++)
  34. {
  35. solve(pos+,i,n,m);
  36. }
  37. }
  38.  
  39. void getAns(int n,int m)
  40. {
  41. memset(a,,sizeof(a));
  42. ans = ;
  43. for(int i=;i<=n;i++)
  44. {
  45. solve(,i,n,m);
  46. }
  47. }
  48.  
  49. int main()
  50. {
  51. init();
  52. for(int i=;i<=;i++)
  53. {
  54. for(int j=;j<=;j++)
  55. {
  56. getAns(i,j);
  57. printf("f(%d,%d)=%d ",i,j,ans);
  58. }
  59. puts("");
  60. }
  61. /*while(scanf("%d%d",&n,&m)==2)
  62. {
  63. memset(a,0,sizeof(a));
  64. ans = 0;
  65. for(int i=0;i<=n;i++)
  66. {
  67. solve(1,i);
  68. }
  69. printf("%d\n",ans);
  70. }*/
  71. }

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

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. Bootstrap3基础教程 01 概述

    移动设备优先是 Bootstrap 3 的最显著的变化. 基础的页面: <!DOCTYPE html> <html> <head> <meta charset ...

  2. MVC4学习要点记二

    一.分页(PagedList.MVC)1.安装PagedList.MVCPM>install-package PagedList.mvc   2.控制器中使用PagedList   3.csht ...

  3. Pytorch中nn.Conv2d的用法

    Pytorch中nn.Conv2d的用法 nn.Conv2d是二维卷积方法,相对应的还有一维卷积方法nn.Conv1d,常用于文本数据的处理,而nn.Conv2d一般用于二维图像. 先看一下接口定义: ...

  4. md加密 16位 32位

    16位大写 //生成MD5 public static String getMD5(String message) { String md5 = ""; try { Message ...

  5. element table切换分页不勾选的自带方法

    场景一:没有回显勾选的情况 table表格加row-key标识选中行唯一标识,多选框加reserve-selection设置为true <template> <el-table v- ...

  6. struct:二进制数据结构的打包与解包

    介绍 struct模块包括一些函数,这些函数可以完成字节串与原生Python数据类型(如数字和字符串)之间的转换 函数与Struct类 struct提供了一组处理结构值的模块级函数,另外还有一个Str ...

  7. JS笔记02

    回顾: html: 超文本标记语言 后缀名: *.html 或 *.htm 标签分类: 围堵标签: 双标签 <html>标签体</html> 空标签: 单标签 <br/& ...

  8. DA_06_iptables 与 firewalld 防火墙

    8.1 防火墙管理工具 防火墙作为公网与内网之间的保护屏障,在保障数据的安全性方面起着至关重要的作用.主要功能都是依据策略对穿越防火墙自身的流量进行过滤.防火墙策略可以基于 流量的源目地址.端口号.协 ...

  9. Linux基础命令01

    绝对路径:从“/”根目录下开始 常用的一些命令选项 ls ls :使用方式  ls {空格}选项 {空格}参数 (全写为list)(等同于dir) 列出当前目录下所有的文件,包括隐藏文件 ls -a ...

  10. maven-将本地jar包添加到本地仓库

    一.使用场景 1.把网上的jar包下到本地,如果要在maven的pom文件中配置使用,就必须将jar包按照maven的规范添加到maven仓库中,然后再pom中既可以配置引用了. 二.准备工作 1.电 ...