Cod sursa(job #2875316)

Utilizator RK13Barbu Eduard RK13 Data 21 martie 2022 13:32:51
Problema Suma divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>
//#pragma GCC optimize ("O3")
//#pragma GCC optimize ("unroll-loops")
//#pragma GCC optimize ("Ofast")
#define MOD 9901
using namespace std;

ifstream f("sumdiv.in");
ofstream g("sumdiv.out");


long long pow_log(long long baza, long long exponent)
{long long sol=1;
while (exponent!=0) {
              if (exponent%2==1) {sol=sol*baza;sol%=MOD;}
              baza*=baza;
              baza%=MOD;
              exponent/=2;
             }
return sol;
}

int main()
{int a,b,sol=1;
f>>a>>b;
int d=2,e;
while (a>1) {e=0;
             while (a%d==0) {a=a/d;
                             e++;

                            }
             if (e>0) {e*=b;
                        if (d%MOD==1) sol=sol*((e+1)%MOD)%MOD; //se aduna 1^b
                            else {sol=sol*((pow_log(d%MOD,e+1)-1+MOD)%MOD*pow_log((d-1)%MOD,MOD-2)%MOD)%MOD;

                                 }
                      }
            if (d==2) d++;
                else d+=2;
            if (d*d>a) d=a;

            }
g<<sol;
}