How Many Sets I

来源:互联网 发布:德龙集团网络培训学院 编辑:程序博客网 时间:2024/05/20 12:25


Description

Give a set S, |S| = n, then how many ordered set group (S1, S2, ..., Sk) satisfies S1 ∩ S2 ∩ ... ∩ Sk = ∅. (Si is a subset of S, (1 <= i <= k))

Input

The input contains multiple cases, each case have 2 integers in one line represent n and k(1 <= k <= n <= 231-1), proceed to the end of the file.

Output

Output the total number mod 1000000007.

Sample Input

1 12 2

Sample Output

19


注意本题有序,就当做是序偶就行了!!从而推导公式ans=(2^k-1)^n

代码:

#include <algorithm>#include <iostream>#include <cstring>#include <cstdlib>#include <vector>#include <queue>#include <cstdio>#include <cmath>#include <string>#include <stack>#include <cctype>using namespace std;#define mod 1000000007long long fun(long long a,long long p,long long m){    if(p==0)        return 1;    long long r=a%m;    long long k=1;    while(p>1)    {        if((p&1)!=0)        {            k=(k*r)%m;        }        r=(r*r)%m;        p>>=1;    }    return (r*k)%m;}int main(){    long long n,k;    while(cin>>n>>k)    {        long long sum;        sum=fun(2,k,mod)-1;        long long temp;        temp=fun(sum,n,mod);        cout<<temp<<endl;    }    return 0;}


原创粉丝点击