Cod sursa(job #1996469)

Utilizator victoreVictor Popa victore Data 1 iulie 2017 17:12:35
Problema Suma divizorilor Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<cstdio>

using namespace std;

long long a,b;
const int mod=9901;

inline long long pow(long long k)
{
    if(k==0)
        return 1;
    if(k&1)
        return (a*pow(k-1))%mod;
    else
    {
        k/=2;
        long long temp=pow(k);
        return (temp*temp)%mod;
    }
}

inline long long sum(long long k)
{
    if(k==0)
        return 1;
    if(k&1)
        return (1+a*(sum(k-1)))%mod;
    else
    {
        k/=2;
        long long putere=pow(k)%mod,temp=sum(k)%mod;
        return (temp+putere*(temp-1))%mod;
    }
}

inline void rezolv()
{
    long long s=sum(b)%mod;
    printf("%lld",s);
}

int main()
{
    freopen("sumdiv.in","r",stdin);
    freopen("sumdiv.out","w",stdout);
    scanf("%lld%lld",&a,&b);
    rezolv();
}