求助QuQ

P1593 因子和

world_execute @ 2020-02-13 22:08:12

将此题第一个题解所述代码

#include <bits/stdc++.h>

using namespace std;

#define Lint long long int
#define MOD 9901

long long mod,to0,to1;

inline Lint Qow(const Lint Base,Lint Index,int Result=1) {
    for (Lint t=Base; Index; t = (t*t)%MOD,Index>>=1)
        if (Index&1) Result = (Result*t)%MOD;
    return Result;
}
inline void calc(Lint &Ans) {
    Ans = (Qow(to0,to1)-1)*Qow(to0-1,MOD-2)*Ans%MOD;
}

Lint a,b,tmp;
Lint Ans=1;

int main() {
    scanf("%lld%lld",&a,&b);
    for (Lint i=2; i*i<=a; ++i)
        if (!(a%i)) {
            for (tmp=0; !(a%i); ++tmp)
                a/=i;
            to1 = (tmp*b+1);
            if (i%MOD==1) Ans=Ans*(tmp+1)%MOD;  //QuQ就是这里
            else to0=i%MOD,calc(Ans);
        }
    if (a!=1) {
        to1=b+1;
        if (a%MOD==1) Ans=Ans*(b+1)%MOD;
        else to0=a%MOD,calc(Ans);
    }
    printf("%lld\n",Ans);
    return 0;
}

中第29行的

Ans=Ans*(tmp+1)%MOD;

改成

Ans=Ans*(tmp*b+1)%MOD;

为何也能过呀QuQ


by world_execute @ 2020-02-13 22:10:42

P1593 因子和 QuQ


by world_execute @ 2020-02-13 22:16:02

有人吗QAQ


by world_execute @ 2020-02-13 22:24:13

。。。睡觉了


by RainFestival @ 2020-02-14 08:48:27

@world_execute %%%


by 阿里椰奶 @ 2020-06-24 14:28:17

9901 * 9901 = 980298011.显然在筛因子的时候不可能筛到大于9901的数,而a=1的时候不会执行次根本不会进入循环内。


|