Cod sursa(job #2632275)

Utilizator UpgradeStrikeMurgilas Mihai-Rares UpgradeStrike Data 2 iulie 2020 17:38:06
Problema Suma divizorilor Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>

using namespace std;

unsigned long long p[100005],exp[100005];
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
int main()
{
    int n,b;
    unsigned long long c,d,i,sd=1;
    in>>n;
    c=n;
    d=2;
    while(c%d==0)
    {
        p[1]=d;
        c/=d;
        exp[1]++;
    }
    if(p[1]==d)
        i=2;
    else
        i=1;
    d=3;
    while(c>1)
    {
        while(c%d==0)
        {
            p[i]=d;
            c/=d;
            exp[i]++;
        }
        if(p[i]==d)
            i++;
        d+=2;
    }
    in>>b;
    for(c=1;c<i;c++)
    {
        unsigned long long t=1,k=1,j;
        for(j=1;j<=exp[c];j++)
            t*=p[c];
        for(j=1;j<=b;j++)
            k*=t;
        k*=p[c];
        sd*=(k-1)/(p[c]-1);
    }
    out<<sd%9901;
    return 0;
}