Cod sursa(job #1505845)

Utilizator alex.vasiuVasiu Alexandru alex.vasiu Data 19 octombrie 2015 20:07:04
Problema Suma divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>

using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
int64_t a,b,e=1,x,y,ans,m=9901;
int64_t put(int64_t x,int64_t p)
{
    if(p)
    {
        if(p%2)
         e=(x*e)%m,put(x,p-1);
        else
         put((x*x)%m,p/2);
    }
    else
        return e;
}
void euclid(int64_t a,int64_t b,int64_t *x,int64_t *y)
{
    if(!b)
    {
        *x=1,*y=0;
        return;
    }
    else
    {
    int64_t x0,y0;
    euclid(b,a%b,&x0,&y0);
    *x=y0;
    *y=x0-(a/b)*y0;
    }
}
int main()
{
   f>>a>>b;
   ans=put(a,b);
   ans*=a;
   ans--;
   ans%=m;
   euclid(a-1,m,&x,&y);
   while(x<=0)
    x+=m;
   g<<(ans*x)%m;
}