Cod sursa(job #2604629)

Utilizator bmc213Mihai Cosmin bmc213 Data 23 aprilie 2020 01:29:24
Problema Suma divizorilor Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
#define mod 9901
using namespace std;

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

int n, m;

long long lgput(long long a, long long b)
{
    long long r = 1;
    while(b)
    {
        if(b % 2 == 1)
            r = ( r % mod * a % mod ) % mod;
        a = ( a % mod * a % mod ) % mod;
        b /= 2;
    }
    return r;
}
long long sum_div(long long n)
{
    long long s = 1;
    int d = 2, fm, q = 0;
    do
    {
        fm = 0;
        while(n % d == 0)
        {
            n /= d;
            fm ++;
        }
        if(fm > 0)
            s = s * (lgput(d, fm + 1) - 1) / (d - 1);
        d ++;
        if(d * d > n && n > 1)
        {
            s = s * (d * d - 1) / (d - 1);
            n = 1;
        }
    }while(n > 1);
    return s;
}
int main()
{
    f >> n >> m;
    g << sum_div(lgput(n, m));
    return 0;
}