Cod sursa(job #1595384)

Utilizator razvandRazvan Dumitru razvand Data 10 februarie 2016 11:21:52
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;
    if(b == 2)
        return a*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)) * i;
    }
}

int main() {

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

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

    long long sq = sqrt(p);

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

        if(p%i == 0) {

            sum += i;

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

            sum %= r;

        }

    }

    out << sum;

    return 0;
}