Cod sursa(job #1896733)

Utilizator rares_ciocieaRares Andrei Ciociea rares_ciociea Data 28 februarie 2017 21:07:09
Problema Suma divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
int a,b;

unsigned long long put(int n,int p)
{
    unsigned long long r=1,c;
    while(p!=1)
    {
        if(p%2==0)
        {
            p=p/2;
            n=(n*n);
        }
        else
        {
            p=p-1;
            r=(r*n);
        }
    }
    n=n*r;
    return n;
}
void desc()
{
    int j=2,p,n=9901;
    unsigned long long sol=1;
    for(j=2; j*j<=a; j++)
    {
        if(a%j==0)
        {
            p=0;
            while(a%j==0)
            {
                p++;
                a/=j;
            }
            p*=b;
            sol*=((put(j,p+1)-1)/(j-1));

            sol%=n;
        }

    }
    if(a!=1)
    {
        p=b;
        sol*=((put(a,p+1)-1)/(a-1));
        sol%=n;
    }
    out<<sol;
}
int main()
{
    in>>a>>b;
    desc();
    return 0;
}