Cod sursa(job #3250988)

Utilizator alecu2008Alecu Alexandru alecu2008 Data 24 octombrie 2024 14:00:45
Problema Suma divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

#define mod 9901
#define il long long

ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");


il aux,x,y;

void eucl(int a,int b){
if(!b){
    x=1;
    y=0;
}
else{
    eucl(b,a%b);
    aux=x;
    x=y;
    y=aux-(a/b)*y;

}
}




int main()
{
    il a,b,d,div,suma=1,i,expo,pr,sc,j;
    fin>>a>>b;
    for(int i=2;i*i<=a;i++){
        expo=i;
        while(a%i==0){
            for(j=1;j<=b;j++)
            expo=(expo*(i%mod))%mod;

            a=a/i;
        }
        if(i-1>mod)eucl(i-1,mod);
        else eucl(mod,i-1);

        while(y<0){
            y=y+i-1;
        }
        suma=(suma*(((expo-1)*y)%mod))%mod;
    }

    if(a>1){
        expo=a;
        for(j=1;j<=b;j++)
            expo=(expo*a)%mod;
        if(a-1>mod)eucl(a-1,mod);
        else eucl(mod,a-1);
        cout<<y;
        while(y<0){
            y=y+a-1;
        }
        suma=(suma*(((expo-1)*y)%mod))%mod;
    }
    fout<<suma;
}