Cod sursa(job #2910889)

Utilizator bianca_ungureanuBianca-Maria Ungureanu bianca_ungureanu Data 25 iunie 2022 16:19:52
Problema Suma si numarul divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int MOD=9973;
long long powlg(long long n,int p)
{
    long long val=1;
    while(p)
    {
        if(p&1)
            val*=n;
        n*=n;
        p>>=1;
    }
    return val;
}

void div(int x,int &nr,int &sum)
{
    int d,p;
    nr=sum=1;
    for(d=2; d*d<=x; d++)
    {
        p=0;
        while(x%d==0)
        {
            p++;
            x/=d;
        }
        nr*=(p+1);
        sum*=1LL*(powlg(d,p+1)-1)/(d-1)%MOD;
    }
    if(x>1)
    {
        nr*=2;
        sum*=1LL*(x*x-1)/(x-1)%MOD;
    }
}

int main()
{
    int t,n,sum,nr,i;
    fin>>t;
    for (i=1;i<=t;i++)
    {
        fin>>n;
        div(n,nr,sum);
        fout<<nr<<' '<<sum<<'\n';
    }
    return 0;
}