hdu-5793 A Boring Question 打表找规律

来源:互联网 发布:数学建模数据分析 编辑:程序博客网 时间:2024/05/22 13:17

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

打表很容易看出规律是m^0+m^1+m^2+...+m^n=(1-m^(n+1))/(1-m)

bc题解上的推导公式。。。。。。。

这里写图片描述

#include<bits/stdc++.h>#define eps 1e-9#define PI 3.141592653589793#define bs 1000000007#define bsize 256#define MEM(a) memset(a,0,sizeof(a))typedef long long ll;using namespace std;int n,m;/*long long c[100][100];int init(){c[0][0]=1;c[1][0]=c[1][1]=1;for(int i=2;i<100;i++){for(int j=0;j<=i;j++){c[i][j]=c[i-1][j]+c[i-1][j-1];}}}long long ans=0;int dfs(int now,int step,long long ss){if(step==m){//cout<<ss<<endl;ans+=ss;return 0;}for(int i=now;i<=n;i++){dfs(i,step+1,ss*c[i][now]);}}int main(){init();for(m=2;m<=10;m++){for(n=0;n<=10;n++){ans=0;for(int i=0;i<=n;i++){dfs(i,1,1);}cout<<ans<<" ";}cout<<endl;}return 0; }*/const int mo=1e9+7; long long poww(long long a,long long b){long long sum=1;while(b){if(b&1)sum=(sum*a)%mo;a=(a*a)%mo;b>>=1;}return sum;}int main(){ int T;long long n,m,i;cin>>T;while(T--){cin>>n>>m;printf("%lld\n",(poww(m,n+1)-1+mo)%mo*(poww(m-1,mo-2))%mo);}return 0;}


原创粉丝点击