Cod sursa(job #1463088)

Utilizator vrabievictorvictor vrabie vrabievictor Data 20 iulie 2015 00:06:09
Problema Suma divizorilor Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<iostream>
#include<fstream>
#define mod 9901

using namespace std;

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

int powmod(long long  x,long long y)
{
    long long r=1;
    while (y)
    {
        if (y%2==1) r=(r*x)% mod;
        y/=2;
        x=(x*x)% mod;
    }

    return r;
}

long long  a,b,i,k,sol;

int main()
{
    fin>>a>>b;sol=1;

    for (i=2;i*i<=a;i++)
        if (a % i==0)
    {
       k=0;
       while (a%i==0) k++,a/=i;
       sol=(sol*((powmod(i,b*k+1)-1+mod)%mod)*powmod(i-1,9899)% mod);
    }
    if (a%mod==1) sol=(sol*(b+1))% mod; else
      sol=(sol*((powmod(a,b+1)-1+mod)%mod)*powmod(a-1,9899))% mod;

   fout<<sol;

   fin.close();fout.close();

    return 0;
}