题目喵述
http://acm.hdu.edu.cn/showproblem.php?pid=6063
一句话题意:求
∑i=1nkμ2(i)⌊nki−−−√⌋
1≤n,k≤1018 ,模 109+7 。
思路
本来去问一道题想秀一下头头,结果被他拿这题反秀。
打个表发现答案就是 nk ,直接快速幂+快速乘碾过。
每个正整数都可以唯一表示成
ab2
,其中
a
无平方因子,而循环枚举的就是
代码
#include <bits/stdc++.h>
#define MOD 1000000007
using namespace std;
typedef long long LL;
int Case;
LL n, k;
LL Times(LL x, LL y){
LL res = 0LL;
while(y){
if(y & 1) res = (res + x) % MOD;
x = (x << 1) % MOD;
y >>= 1;
}
return res;
}
LL Pow(LL x, LL y){
LL res = 1LL;
while(y){
if(y & 1) res = Times(res, x);
x = Times(x, x);
y >>= 1;
}
return res;
}
int main(){
while(~ scanf("%I64d%I64d", &n, &k))
printf("Case #%d: %I64d\n", ++Case, Pow(n, k));
return 0;
}