参考博客: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. exclipe怎么设置编码为UTF-8

    如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码.然而,Eclipse工作空间(workspace)的缺省字符编码是操作系统缺省的编码,简 ...

  2. ThreadLocal的原理与使用

    前言 在java web项目中,经常会使用到单例对象,从服务器启动那一时刻就实例化全局对象.然后会对某些全局对象的属性进行修改之类的操作,但是我们知道项目一般都是部署到tomcat.Jboss之类的服 ...

  3. Centos7:nginx的安装,配置及使用

    安装依赖 yum install gcc-c++//gcc环境 yum install -y pcre pcre-devel//PCRE:nginx的http模块使用pcre来解析正则表达式 yum ...

  4. 使用javascript和jquery获取类方法

    1.本质区别 jquery是一个javascript库.jquery是一个基于javascript语言的框架,本质上就是javascript. 2.代码编写的差异 jquery大大简化了JavaScr ...

  5. linux 下vim 开发环境配置(通用所有编程语言)

    1.下载 http://www.iterm2.com/ 2.oh-my-zsh curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master ...

  6. Gitlab创建ssh key并添加配置

    1 生成ssh key  zj改成你自己的邮箱或者名字之类的 ssh-keygen -t rsa -C "zj" 2 找到你生成的ssh key copy 公钥 添加到gitlab ...

  7. 2.Java NIO 简介

    概述 Java NIO 是 JDK 1.4 发布的一套全新的IO API(New IO 简称 NIO),由于 JDK 1.7 对 NIO 的更新,目前 NIO 被广泛应用,以至于 将 JDK 1.7 ...

  8. manjaro 常用软件安装

    1.搜狗输入法 sudo pacman -S fcitx-sogoupinyin fcitx-configtool fcitx-im yay -Sa fcitx-qt4 sudo vim /etc/e ...

  9. SpringBoot项目 设置全局跨域

    package com.nf147.policy_project; import org.springframework.stereotype.Component; import javax.serv ...

  10. SiteMesh的简单使用

    简介: SiteMesh是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的. 它能通过创建一个包装对象,也就是装饰来包裹的对象.尽管它是由Java语言来实现的, ...