Pagini recente » Cod sursa (job #1615608) | Cod sursa (job #2662507) | Cod sursa (job #111795) | Cod sursa (job #2871594) | Cod sursa (job #2516555)
#include <bits/stdc++.h>
#define Mod 9973
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int t;
bitset <100001> ciur;
int prim[30001],nrP;
long long n;
int fact[1001],numFact[1001],nr;
long long nrDiv,sumDiv;
void findPrimes(int x)
{
for(int i=2;i<=x;i++)
if(!ciur[i])
{
prim[++nrP]=i;
for(int j=i*2;j<=x;j+=i)
ciur[j]=1;
}
}
void div_fact(long long x)
{
nr=0;
int xMax=sqrt(x);
for(int d=1;prim[d]<=xMax && x!=1;d++)
if(x%prim[d]==0)
{
fact[++nr]=prim[d];
numFact[nr]=0;
while(x%prim[d]==0)
{
numFact[nr]++;
x/=prim[d];
}
}
if(x!=1)
{
fact[++nr]=x;
numFact[nr]=1;
}
}
long long put(int x,int p)
{
long long s=1,exp=x;
while(p)
{
if(p%2)
s*=exp;
p/=2;
exp*=exp;
}
return s;
}
int main()
{
in>>t;
findPrimes(100000);
while(t--)
{
in>>n;
div_fact(n);
nrDiv=1;
sumDiv=1;
for(int i=1;i<=nr;i++)
nrDiv*=(numFact[i]+1);
for(int i=1;i<=nr;i++)
sumDiv=(long long)(sumDiv *( ( put(fact[i],numFact[i]+1)-1 )/(fact[i]-1) ) )%Mod;
out<<nrDiv<<' '<<sumDiv<<'\n';
}
return 0;
}