Cod sursa(job #3297968)

Utilizator iordacheMatei Iordache iordache Data 25 mai 2025 09:58:45
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
#define pb push_back
#define int long long
using namespace std;
const int LIM=1e6+5;int VALMAX=1e6+5,mod=9973;
bool ciur[LIM];
vector<int> primes;
int binpow(int n, int e)
{
    int ans=1;
    while(e)
    {
        if(e&1) ans=ans*n%mod;
        n=n*n%mod;
        e>>=1;
    }
    return ans;
}
int inv(int x) {return binpow(x,mod-2);}
void solve()
{
    int n;
    cin>>n;
    int cnt=1,ss=1;
    for(auto p:primes)
    {
        if(n%p!=0) continue;
        int e=0,pp=1;
        while(n%p==0) ++e,n/=p,pp*=p;
        cnt*=(e+1);
        pp*=p;
        ss=ss*(pp-1)%mod;
        ss=ss*inv(p-1)%mod;
    }
    cout<<cnt<<" "<<ss;
}
signed main()
{
    ifstream cin("ssnd.in");ofstream cout("ssnd.out");
    for(int i=2;i<=VALMAX;++i)
    {
        if(ciur[i]) continue;
        primes.pb(i);
        for(int j=i*2;j<=VALMAX;j+=i) ciur[j]=1;
    }
    int t=1;cin>>t;
    while(t--) {solve();cout<<'\n';}
}