Cod sursa(job #2449614)

Utilizator RadianElevenAdrian Ariotn RadianEleven Data 20 august 2019 11:39:15
Problema Suma divizorilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f ("sumdiv.in");
ofstream g ("sumdiv.out");
long long abmodc(long long a,long long b, long long c)
{
     //   a^b mod c
    f>>a>>b>>c;
   long long  n=b;
   long long p=1;
   long long q=a;
        while(n)
        {
            if(n%2==1) p*=q;
            q*=q;
            n/=2;
            p%=c;
            q%=c;
        }
    return p;
}
long long a,b;
int main()
{
    f>>a>>b;
    int p=2;
    int s=1;
    int putere=0;
    while(a%2==0 )
    {
        putere+=1;
        a/=2;

    }
    putere*=b;
    s*=abmodc(2, putere+1, 9901)-1;

    for(p=3;a>1;p+=2)
    {
      //  cout<<p<<" "<<a<<"\n";
        putere=0;
        while(a%p==0)
        {
            putere+=1;
            a/=p;

        }
        putere*=b;
      //  g<<s<<" "<<putere+1<<" "<<p<<"\n";

        s*=abmodc(p, putere+1, 9901)-1;
      //  g<<abmodc(p, putere+1, 9901)-1<<"<- ";
        int t=p-1;
    //    g<<s<<"s; ";

        s*=abmodc(t, 9899, 9901);
      //  g<<abmodc(t, 9899, 9901)<<"p; ";
        s%=9901;
    }
    g<<s;




    return 0;
}