Cod sursa(job #3156519)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 11 octombrie 2023 18:25:59
Problema Suma divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<fstream>
using namespace std;
ifstream F("sumdiv.in");
ofstream G("sumdiv.out");
#define N 9901
int a,b,s,p,i;
int A(int a,int n)
{
    if(!n)
        return 1;
    int x=A(a,n>>1);
    x=(x*x)%N;
    if(n&1)
        x=(x*a)%N;
    return x;
}
int C(int a)
{
    int r;
    if(!a)
        return 0;
    for(r=1;r%a;r+=N);
    return r/a;
}
int B(int q,int e)
{
    return q==1?(e+1)%N:(((A(q,e+1)+N-1)%N)*C((q+N-1)%N))%N;
}
int main()
{
    for(F>>a>>b;!(a&1);++p,a>>=1);
    for(s=B(2,p*b),i=3;i*i<=a;i+=2)
        if(!(a%i)) {
            for(p=0;!(a%i);++p,a/=i);
            s=(s*B(i%N,p*b))%N;
        }
    if(a>1)
        s=(s*B(a%N,b))%N;
    G<<s;
    return 0;
}