您的位置:首页 > 其它

Hdu 6063 - RXD and math(思维)

2017-08-02 23:45 351 查看
题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=6063

题目大意:

求式子∑nki=1μ2(i)×⌊nki−−√⌋的值

分析:

根据多校第三场的1008题解,任意一个数x,可以被唯一的表示成a2×b的形式,其中μ2(b)=1,对于小于nk的每一个μ2(i)=1的i来说,⌊xi−−√⌋表示a2×i≤x的所有a的个数,由于对于每个i,能表示出的数均不同,所以小于nk的所有的i恰好能表示出nk内的所有数,所以答案就是nk,快速幂即可

注意:由于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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: