Description
Input
输入包含一行两个整数N和K,1<=N,K<=10^9
Output
一行一个整数,表示不同方案数目模1,000,000,007的值。
Sample Input
2 2
Sample Output
16
其实这题原题还有一组样例6 40,输出是401898087
然后手推找规律可以发现答案就是2^(n+k)
带入大数据验证发现可行
【这题似乎考场上基本大家都A掉了】
证明的话似乎是从一行推到多行还是怎么样的。。并不会证
#include<cstdio>
using namespace std;
long long mod=1000000007;
long long power(long long x,long long y)
{
long long p=1,xx=2;
while(y!=0)
{
if(y%(long long)2==1)
p=p*xx%mod;
xx=xx*xx%mod;
y=y/(long long)2;
}
return p;
}
int main()
{
long long n,k;
scanf("%lld%lld",&n,&k);
printf("%lld\n",power(2,n*k));
return 0;
}