Cod sursa(job #2449608)

Utilizator RadianElevenAdrian Ariotn RadianEleven Data 20 august 2019 11:26:18
Problema Suma divizorilor Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 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;
}
int 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;
        s*=abmodc(p, putere+1, 9901)-1;
        int t=p-1;
        s*=abmodc(t, 9899, 9901);

    }
    g<<s;



    return 0;
}