Cod sursa(job #1383534)

Utilizator bobbychivescuChivescu Bogdan-Andrei bobbychivescu Data 10 martie 2015 12:51:34
Problema Suma divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <cstdio>
#include <string>
#include <cstring>
#include <queue>
#include <vector>
#include <stack>
#include <cmath>
#include <iostream>
#include <fstream>
#define PI 3.14159265
#define R 9901
using namespace std;

int iv(int i)
{
    int j, k=i;
    for(j=2; j<=R-2; ++j)k=(k*i)%R;
    return k;
}

int calc(int a, int b)
{
    int i, j, k=1;
    for(i=1; i<=b+1; ++i)k=(k*a)%R;
    if(k)--k;
    else k=R-1;
    k=(k*iv(a-1))%R;
    return k;
}
vector<pair<int, int> > h;
int main()
{
    int i, j, k, l;
    freopen("sumadiv.in", "r", stdin);
    freopen("sumadiv.out", "w", stdout);
    scanf("%d%d", &j, &k);
    for(i=2; j!=1; ++i){
        if(j%i==0){
            l=0;
            while(j%i==0){
                l++;
                j/=i;
            }
            h.push_back(make_pair(i, l*k));
        }
    }
    k=1;
    for(i=0; i<h.size(); ++i){
        k=(k*calc(h[i].first, h[i].second))%R;
    }
    printf("%d", k);
    return 0;
}