Cod sursa(job #1595382)

Utilizator razvandRazvan Dumitru razvand Data 10 februarie 2016 11:19:55
Problema Suma divizorilor Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <cmath>
#define r 9901

using namespace std;

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

long long pow(long long a, long long b, long long i) {
    if(b == 1)
        return a%r;
    if(b == 2)
        return (a%r)*i;
    if(b % 2 == 0) {
        long long p = pow(a, b/2, i);
        p %= r;
        return p * p;
    } else {
        return (pow(a, b-1, i)%r) * i;
    }
}

int main() {

    int a,b;
    in >> a >> b;

    long long p = pow(a, b, a%r);
    long long sum = 1+p;

    long long sq = sqrt(p);

    for(long i = 2; i <= sq; i++) {

        if(p%i == 0) {

            sum += i%r;

            if(p/i == sq)
                sum += p%r;
            else
                sum += (p/i)%r;

            sum %= r;

        }

    }

    out << sum;

    return 0;
}