Cod sursa(job #3277620)

Utilizator tudorhTudor Horobeanu tudorh Data 16 februarie 2025 22:22:50
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int mod=9973;
int power(int base,int power)
{
    int res=1;
    while(power)
    {
        if(power%2)
        {
            res*=base;
            res%=mod;
        }
        base*=base;
        base%=mod;
        power/=2;
    }
    return res;
}
int invers(int n)
{
    return power(n,mod-2);
}
void tcase()
{
    long long n,nr=1,sum=1;
    fin>>n;
    int d=2;
    while(d*d<=n)
    {
        int exp=0;
        while(n%d==0)
        {
            n/=d;
            exp++;
        }
        nr*=(exp+1);
        sum=sum*(power(d,exp+1)-1)%mod*invers(d-1)%mod;
        if(d==2)
            d++;
        else d+=2;
    }
    if(n!=1)
    {
        nr*=2;
        sum=sum*(n+1);
    }
    sum%=mod;
    fout<<nr<<' '<<sum<<'\n';
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr),cout.tie(nullptr);
    int tc;
    fin>>tc;
    while(tc--)
        tcase();
    return 0;
}