Cod sursa(job #2271885)

Utilizator cicero23catalin viorel cicero23 Data 29 octombrie 2018 13:30:25
Problema Suma divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <cmath>
#define ll long long
#define M 9901

using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
ll putere(ll x,ll n)
{
    ll a;
    if(n==0) return 1;
    else if(n==1) return x;
    a=putere(x,n/2);
    if(n%2==0) return (a*a)%M;
    else return ((x*a)%M*a)%M;
}
int main()
{
    ll a,n;
    f>>a>>n;
    ll s1=1,s2=1;
    for(ll i=2;i<=sqrt(a);i++)
    {
        ll put=0;
        while(a%i==0){put++,a/=i;}
        if(put!=0)
        {

            s1=(s1*(putere(i,n*put+1)-1))%M;

            s2=(s2*(putere(i-1,M-2)))%M;
        }
    }
    if(a>1)
    {s1=(s1*(putere(a,n+1)-1))%M;
    s2=(s2*(putere(a-1,M-2)))%M;}
    g<<(s1*s2)%M;
    return 0;
}