HDU-5793-A Boring Question(打表找规律)

来源:互联网 发布:英语发音软件 编辑:程序博客网 时间:2024/05/22 12:39

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

题意:推公式

题解:打表找规律

CODE:

#include <bits/stdc++.h>using namespace std;const int mod = 1000000007;long long inv(long long a){    if(a==1)return 1;    return inv(mod%a)*(mod-mod/a)%mod;}long long quick_pow(long long a, long long n){    long long ans=1;    while(n)    {        if(n&1)ans=(ans*a)%mod;        a=(a*a)%mod;        n>>=1;    }    return ans;}int main(){   long long n,m;   int T;   long long ans;   cin>>T;   while(T--)   {      cin>>n>>m;      ans=(quick_pow(m,n+1)-1)*inv(m-1)%mod;      cout<<ans<<endl;   }   return 0;}

找规律代码QAQ:

#include <bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3fconst int maxn = 1e5+7;long long jie[20];long long a[maxn];int M,N;void get_jie(){    jie[0]=jie[1]=1;    for(int i=2; i<20; ++i)        jie[i]=1LL*i*jie[i-1];}long long ans;long long cal(){    long long di=1;    for(int i=1; i<=M; ++i)    {        di*=(jie[ a[i]-a[i-1] ]);    }    return jie[ a[M] ]/di;}void dfs(int deep,int n, int m, int s){    if(m==0)    {        ans+=cal();        return ;    }    for(int i=s; i<=n; ++i)    {        a[deep]=i;        dfs(deep+1,n,m-1,i);    }}int main(){    int n,m;    get_jie();    for(n=1; n<=5; ++n)    {        cout<<"n="<<n<<" ";        for(m=2; m<=5; ++m)        {            N=n,M=m;            ans=0;            dfs(1,n,m,0);            cout<<ans<<" ";        }        cout<<endl;    }    /*    cin>>n>>m;    N=n,M=m;    ans=0;    dfs(1,n,m,0);    cout<<ans<<endl;*/    return 0;}/**/


0 0
原创粉丝点击