社区讨论
求救!!!!WA了第十三个点,凑不出HACK数据> <
P1593因子和参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lrkop0g0
- 此快照首次捕获于
- 2024/01/19 21:36 2 年前
- 此快照最后确认于
- 2024/01/20 09:40 2 年前
大佬求调!
CPP#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll MOD=9901;
bool is_prime[100010];
ll prime[100010],t;
ll p[100010],s[100010],k,ans=1;
ll fast (ll a,ll q)
{
ll k=a,s=1;
while (q) {
if (q&1) s=s*k%MOD;
k=k*k%MOD;
q>>=1;
}
return s%MOD;
}
ll a,b;
int main()
{
scanf("%lld%lld",&a,&b);
for (ll i=1;i<=100000;i++) is_prime[i]=true;
for (ll i=2;i<=100000;i++) {
if (is_prime[i]) prime[++t]=i;
for (ll j=1;j<=t && prime[j]*i<=100000;j++) {
is_prime[prime[j]*i]=false;
if (i%prime[j]==0) break;
}
}
for (ll i=1;i<=t;i++) {
if (a%prime[i]==0)
p[++k]=prime[i];
while (a%prime[i]==0) {
a/=prime[i];
s[k]++;
}
}
for (ll i=1;i<=k;i++) s[i]*=b;
for (ll i=1;i<=k;i++) {
if (p[i]%MOD==1 && p[i]!=1) {
ans=ans+s[i]+1;
ans%=MOD;
continue;
}
ans=ans*(fast(p[i],s[i]+1)-1)%MOD;
ans=ans*(fast(p[i]-1,MOD-2))%MOD;
}
if (a!=1) ans=ans*(1+a)%MOD;
printf("%lld",(ans+MOD)%MOD);
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...