Cod sursa(job #2113018)

Utilizator n.nadim2001Nofal Nadim n.nadim2001 Data 24 ianuarie 2018 10:02:24
Problema Suma divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>

using namespace std;

ifstream fin ("sumdiv.in");
ofstream fout ("sumdiv.out");
typedef  unsigned long long ULL;
int MOD=9901;
ULL put(ULL a,ULL b)
{
    if(b==0)return 1;
    if(b==1)return a;
    ULL aux=put(a,b/2);
    if(b&1)return ((aux*aux)%MOD*a)%MOD;
    return (aux*aux)%MOD;
}

ULL a,b,n=1,s=1;
int i,d,p;
int main()
{
    fin>>a>>b;

    n=put(a,b);

    d=2;
    while(n>1)
    { p=0;
      while(n%d==0){n=n/d;
                    ++p;}
      if(p)s*=(put(d,p+1)-1)/(d-1);
      s=s%MOD;
      ++d;
      if(d*d>n)d=n;
    }

    fout<<s;




    fin.close(); fout.close();
    return 0;
}