Pagini recente » Cod sursa (job #1351233) | Cod sursa (job #1075528) | Cod sursa (job #338223) | Cod sursa (job #1178038) | Cod sursa (job #2076394)
#include <iostream>
#include <bits/stdc++.h>
#define NM 1000005
#define pb push_back
#define m 9973
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int ciur[NM];
vector<int> prim,divv;
map<int,int> fr,val;
long long t,n,s,nrdiv,sdiv;
int main()
{
in>>t;
for(int i=2;i<=1000000;++i)ciur[i]=1;
for(long long i=2;i<=1000000;++i)
if(ciur[i])
{
prim.pb(i);
for(long long j=i*i;j<=1000000;j+=i)
ciur[j]=0;
}
while(t)
{
--t;
in>>n;
fr.clear();
val.clear();
divv.clear();
sdiv=1;
nrdiv=1;
for(int i=0;n>1;++i)
{
if(n%prim[i]==0)divv.pb(prim[i]);
while(n%prim[i]==0)
{
n/=prim[i];
if(fr.find(prim[i])==fr.end())
{
val[prim[i]]=prim[i];
fr[prim[i]]=2;
}
else ++fr[prim[i]];
val[prim[i]]*=prim[i];
val[prim[i]]%=m;
}
}
for(auto i:divv)
{
nrdiv*=fr[i];
sdiv*=(val[i]-1)/(i-1);
}
out<<nrdiv%m<<" "<<sdiv%m<<'\n';
}
return 0;
}