Cod sursa(job #3250992)

Utilizator alecu2008Alecu Alexandru alecu2008 Data 24 octombrie 2024 14:39:56
Problema Suma divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 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;
    cout<<x<<" "<<y<<'\n';

}
}




int main()
{
    il a,b,suma=1,i,expo,j;
    fin>>a>>b;
    for(int i=2;i*i<=a;i++){
        expo=i;
        if(a%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+mod;
        }
        suma=(suma*(((expo-1)*y)%mod))%mod;
        }
    }

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