Cod sursa(job #3254239)

Utilizator daniela.ravoiuDumitrescu Daniela daniela.ravoiu Data 6 noiembrie 2024 17:56:43
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.8 kb
#include <bits/stdc++.h>
#define mod 9973
using namespace std;
bool ciur[1000005];
vector <long long> prime ;
long long i,j,k,nr,t,sd,nrd, cate;
static inline long long exp(long long a, long long b)
{
    long long sol = 1;
    while(b)
        if(b % 2 == 0)
            b /= 2, a = (1LL * a * a) % mod;
        else
            b --, sol = (1LL * a * sol) % mod;

    return sol;
}

static inline long long InvMod(long long x){
    return exp(x, mod - 2);
}


long long expo (long long a, long long b)
{
    long long putere=1;
    while (b)
    {

        if (b&1){putere=(putere*1LL*a)%mod;}
    a=(1LL*a*a);a=a%mod;
    b>>=1;


    putere=putere%mod;
    }
return putere;
}
long long Inv_Mod(long long x)
{

    long long p=expo(x, mod-2);
    return  p;

}

long long solve(long long x, long long &sd,long long &nd)
{
    long long numarator=1LL, numitor=1LL, INV;nd=1;
    long long d=2, putere;
    while (d*d<=x)
    {putere=0;
        if(x%d==0){putere=1;
        while (x%d==0){x/=d;putere++;}
        nd*=putere;nd%=mod;
        numarator=1LL*numarator*(expo(d,putere)-1);
        numitor=1LL*numitor*(d-1);
        //numarator=numarator%mod;
        //numitor=numitor%mod;

                                          }
    d++;}
    if (x>1){nd*=2;putere=2;d=x;//nd%=mod;
    numarator*=expo(d,putere)-1;
    numitor*=(d-1);}
    //numarator=numarator%mod;
    //numitor=numitor%mod;

    INV=Inv_Mod(numitor%mod)%mod;
    long long INV_R=InvMod(numitor);
                           INV_R=INV_R;
    sd=(1LL*(numarator*INV )%mod);
}
 long long nr_div( long long x)
 {

 }
int main()
{ ifstream f("ssnd.in");
f>>t;
ofstream g("ssnd.out");
for (i=1;i<=t;i++)
{
    f>>nr;
    solve(nr, sd, nrd);
    g<<nrd<<" "<<sd<<endl;
}
    return 0;
}