Cod sursa(job #2581594)

Utilizator malakayMarius Andronie malakay Data 15 martie 2020 15:15:16
Problema Suma divizorilor Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>
#define mod 9901
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
int putere(int a,int b)
{
    int r=1;
    while(b>0)
    {
        if(b%2==1) r=(1LL*r*a)%mod;
        b>>=1;
        a=(1LL*a*a)%mod;
    }
    return r;
}
int suma(int x,int n)
{
    if(x==0) return 1;
    if(x==1) return (n+1)%mod;
    return (putere(x,n+1)+mod-1)%mod*putere(x-1,mod-2)%mod;
}
int main()
{
    int a,b,rsp=1;
    f>>a>>b;
    for(int i=2; i*i<=a; i++)
        if(a%i==0)
        {
            int p=0;
            while(a%i==0)
                ++p,
                a/=i;
            rsp=rsp*suma(i,b*p)%mod;
        }
    if(a>1) rsp=rsp*suma(a,b)%mod;
    g<<rsp;
    return 0;
}