列表

详情


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;
}

上一题