NC20216. [JSOI2015]子集选取
描述
输入描述
输入包含一行两个整数N和K,1 ≤ N,K ≤ 10^9
输出描述
一行一个整数,表示不同方案数目模1,000,000,007的值。
示例1
输入:
2 2
输出:
16
C++14(g++5.4) 解法, 执行用时: 5ms, 内存消耗: 496K, 提交时间: 2019-09-26 20:25:38
#include<bits/stdc++.h> #define int unsigned long long using namespace std; const int Mod=1e9+7; int qpow(int x,int y){ int ans=1; for(;y;y>>=1,x=x*x%Mod)if(y&1)ans=ans*x%Mod; return ans; } int n,k; signed main(){ scanf("%lld%lld",&n,&k); printf("%lld\n",qpow(2,n*k)); return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 4ms, 内存消耗: 496K, 提交时间: 2020-02-14 16:31:58
#include<bits/stdc++.h> #define int unsigned long long using namespace std; const int Mod=1e9+7; int qpow(int x,int y) { int ans=1; for(;y;y>>=1,x=x*x%Mod) if(y&1) ans=ans*x%Mod; return ans; } int n,k; signed main() { scanf("%lld%lld",&n,&k); printf("%lld\n",qpow(2,n*k%(Mod-1))); return 0; }