标签:cout -- Big Sum cin res 1e9 ll mod
AND 0, Sum Big
来源:https://codeforces.com/problemset/problem/1514/B
标签:【位运算】【数论】
难度:★★☆☆☆
题目简述
给定两个数n和k,计算出满足长度为n且满足下列条件的数列的数量:
1.所有的元素都属于[0,2k-1];
2.所有元素的按位与运算结果为0;
3.元素和尽可能大;
答案可能很大,对1e9+7取模。
Input
T:测试组数(t<=10)。
每组测试输入一个n,k(1≤n≤105, 1≤k≤20);
Output
输出答案对1e9+7取模的结果
Sample Input
2
2 2
100000 20
Sample Output
4
226732710
More Info
In the first example, the 4 arrays are:
[3,0],
[0,3],
[1,2],
[2,1].
题目思路
做的时候觉得肯定有一个计算的式子,只可惜脑袋太笨没想出来,看了题解竟然是快速幂,有点可惜,可能多试几次就能试出来了。暂且还不知道为什么会是nk%mod。
代码(附注释)
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
ll n,t,k;
ll ksm(ll a,ll b) //快速幂
{
ll res=1;
while(b){
if(b&1) res=(res*a)%mod;
a=(a*a)%mod;
b>>=1;
}
return res%mod;
}
int main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>t;
while(t--){
cin>>n>>k;
cout<<ksm(n,k)<<endl;
}
return 0;
}
标签:cout,--,Big,Sum,cin,res,1e9,ll,mod 来源: https://www.cnblogs.com/unravel-CAT/p/14803126.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。