题意
求解
∑i=1nkμ2(i)×⌊nki−−−√⌋
其中 μ(n)=1(n=1) , μ(n)=(−1)k(n=p1p2p3…pk) , 其他情况μ(n)=0(其他情况)
分析
=-=赛时暴力打表,发现答案刚好等于 nk ,套个快速幂即可。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
using namespace std;
#define LL long long
const int mod=1e9+7;
int isprime[100100];
LL quick_pow(LL a,LL b){
LL ret=1;
while(b){
if(b&1)
ret=(a*ret)%mod;
b>>=1;
a=(a*a)%mod;
}
return ret;
}
int main(){
LL n,k;
int cas=1;
while(~scanf("%I64d %I64d",&n,&k)){
LL ans=quick_pow(n%mod,k);
printf("Case #%d: %I64d\n",cas++,ans);
}
}