Cod sursa(job #1895753)

Utilizator rares_ciocieaRares Andrei Ciociea rares_ciociea Data 28 februarie 2017 10:42:56
Problema Suma divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>

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

unsigned long long put(int a,int b)
{
    unsigned long long p=1;
    for(int i=1; i<=b; i++)
        p*=a;
    return p;
}
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;
        }
        j++;
    }
    if(a!=1)
    {
        p=b;
        sol*=(((put(a,p+1)-1)%9901)/(a-1));
        sol%=n;
    }
    out<<sol;
}
int main()
{
    in>>a>>b;
    desc();
    return 0;
}