Pagini recente » Cod sursa (job #2747937) | Cod sursa (job #2516591)
#include <bits/stdc++.h>
#define Mod 9973
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int t;
int prim[100001];
bitset <1000001> ciur;
unsigned long long n;
int nrDiv,sumDiv;
int fact[101],numFact[101],all;
void findPrimes(int x)
{
int poz=0;
for(int i=2;i<=x;i++)
if(!ciur[i])
{
prim[++poz]=i;
for(int j=i*2;j<=x;j+=i)
ciur[j]=1;
}
}
void factors(unsigned long long nr)
{
all=0;
int primMax=sqrt(nr);
for(int d=1;prim[d]<=primMax && nr!=1;d++)
if(nr%prim[d]==0)
{
fact[++all]=prim[d];
numFact[all]=0;
while(nr%prim[d]==0)
{
numFact[all]++;
nr/=prim[d];
}
}
if(nr!=1)
{
fact[++all]=nr;
numFact[all]=1;
}
}
int progGm(int x,int r)
{
int sum=1,add=x;
while(r)
{
sum=(sum+add)%Mod;
add=(add*x)%Mod;
r--;
}
return sum;
}
int main()
{
in>>t;
findPrimes(1000000);
while(t--)
{
in>>n;
factors(n);
sumDiv=1;
nrDiv=1;
for(int i=1;i<=all;i++)
{
nrDiv*=(numFact[i]+1);
sumDiv=( sumDiv*progGm(fact[i],numFact[i]) )%Mod;
}
out<<nrDiv<<' '<<sumDiv<<'\n';
}
return 0;
}