Cod sursa(job #2354632)

Utilizator BAlexandruBorgovan Alexandru BAlexandru Data 25 februarie 2019 13:47:14
Problema Suma divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>

using namespace std;

ifstream f("sumdiv.in");
ofstream g("sumdiv.out");

int a,b,i,j;
int v[1000001],prime[100001],nrp,k;
long long s=1,q,q1;

int main()
{
    f>>a>>b;
    for (i=2;i<=1000000;i++)
        if (v[i]==0)
        {
            nrp++;
            prime[nrp]=i;
            for (j=i+i;j<=1000000;j=j+i)
                v[j]=1;
        }

    for (i=1;i<=nrp && prime[i]*prime[i]<=a;i++)
    {
        k=0;
        q=1;
        while (a%prime[i]==0)
        {
            a=a/prime[i];
            k++;
            q=q*prime[i];
        }
        if (k)
        {
            s++;
            q1=q;
            for (j=1;j<=b;j++)
                q=q*q1;
            q=q*prime[i];
            s=(s*(q-1)/(prime[i]-1))%9901;
        }
    }
    if (a>1)
    {
        q=1;
        for (i=1;i<=b+1;i++)
            q=q*a;
        s=(s*(q-1)/(a-1))%9901;
    }
    g<<s;
    return 0;
}