题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=6063
题目大意:
求式子
∑nki=1μ2(i)×⌊nki−−√⌋
的值
分析:
根据多校第三场的1008题解,任意一个数
x
,可以被唯一的表示成
注意:由于 n,k 均为 1018 级别,所以如果快速幂前不对n取模,过程中会爆long long
代码:
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
typedef long long ll;
const int mod = 1e9+7;
ll quickpow(ll a,ll n)
{
ll res= 1;
while (n)
{
if (n&1)
res = res*a%mod;
a = a*a%mod;
n >>= 1;
}
return res;
}
int main()
{
ll n,k;
int t = 1;
while (~scanf("%lld%lld",&n,&k))
{
ll ans =quickpow(n%mod,k);
printf("Case #%d: %lld\n",t++,ans%mod);
}
return 0;
}