Jorisy @ 2022-04-10 16:55:54
40pts,WA on #1~10
按算法竞赛进阶指南的分治思路去做的。。。
code:
#include<bits/stdc++.h>
#define ll long long
#define mod 9901
using namespace std;
ll qpow(ll x,ll p)
{
ll ans=1;
while(p)
{
if(p&1) ans=ans*x%mod;
else x=x*x%mod;
p>>=1;
}
return ans;
}
ll sum(ll p,ll c)
{
if(c==0) return 1;
if(c==1) return p+1;
if(c&1) return (1+qpow(p,(c+1)/2))*sum(p,(c-1)/2)%mod;
return ((1+qpow(p,c/2))*sum(p,c/2-1)+qpow(p,c))%mod;
}
int main()
{
ll a,b,ans=1,i=2,x=0;
cin>>a>>b;
while(a>1)
{
if(a%i==0)
{
x++;
a/=i;
}
else
{
ans=ans*sum(i,b*x)%mod;
i++;
x=0;
}
}
ans=ans*sum(i,b*x)%mod;
i++;
x=0;
cout<<ans;
return 0;
}
by 3a51_ @ 2022-04-10 17:01:32
看样子是sum写错了。
by Jorisy @ 2022-04-10 17:03:51
@Tothetime_tolife orz可是哪里错了呢。。
by nydzsf_qwq @ 2022-04-10 17:08:54
这题能有蓝?!
离谱
by 3a51_ @ 2022-04-10 17:10:25
@JY 这个可以错位相减把
by Jorisy @ 2022-04-10 17:16:00
@Tothetime_tolife
如果使用等比数列求和公式,需要做除法。而答案案还需要对
9901 取模,\bmod 运算只对加、减、乘有分配率,不能直接对分子、分母分别取模后再做除法。
书上这么说的。。
by 3a51_ @ 2022-04-10 17:25:28
@JY 逆元不行吗/xyx
by Jorisy @ 2022-04-10 17:30:01
@Tothetime_tolife 不会
by Ginger_he @ 2022-04-10 18:05:36
@JY 这题要先会逆元吧
by Ginger_he @ 2022-04-10 18:07:33
@JY 简单来说就是