1514B - AND 0, Sum Big

题目:https://codeforces.com/problemset/problem/1514/B

题意:一个数组有n个元素

1.n个元素都在0到2^k−1之间包括2^k-1

2.这些元素的按位与等于0

3.满足以上条件且和尽量最大

题解

1.元素都在二进制的0 ~ k−1位数中

2.二进制每一位都至少出现过一个0

(按位与:清0 操作:每一位列出现至少一个零)

3.满足最大则只能每一列出现一个0

例:n=4,k=4

        2^0  2^1  2^2   2^3
第1个数   0    1    1     1
第2个数   1    0    1     1
第3个数   1    1    0     1
第4个数   1    1    1     0

每一位 有n种选法:n^k

#include <iostream>
#include <cmath>
using namespace std;
typedef long long int ll;

const int mod = 1e9 + 7;
int main()
{
	int t;
	cin >> t;
	while (t--)
	{
		int n, k;
		cin >> n>>k;
		ll ans = 1;
		while (k--)
		{
			ans = ans * n % mod;
		}
		cout << ans << endl;
	}
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值