Pagini recente » Cod sursa (job #3188746) | Cod sursa (job #1376495) | Cod sursa (job #2613502) | Cod sursa (job #1165799) | Cod sursa (job #627560)
Cod sursa(job #627560)
#include <cstdio>
using namespace std;
bool v[1000001];
int p[80000];
long long nr,s;
inline int mod(int x)
{
int a=x%9973;
if(a<0)
return 9973+a;
else
return a;
}
void ciur()
{
long long i,j;
for(i=2;i<=1000000;++i)
{
if(v[i]==true)
continue;
p[++p[0]]=i;
for(j=i;j*i<=1000000;++j)
{
v[i*j]=true;
}
}
}
inline int minus1(long long x)
{
int r = (x-1)%9973;
if(r < 0) r+=9973;
return r;
}
void descompune(long long x)
{
long long i,put;
nr=1;
s=1;
for(i=1;p[i]*p[i]<=x;++i)
{
long long a;
if(x%p[i]==0)
{
a=p[i]*p[i];
put=1;
x/=p[i];
while(x%p[i]==0)
{
x/=p[i];
put++;
a=a*p[i];
}
nr*=put+1;
a--;
s=(a/(p[i]-1)*s)%9973;
}
}
if(x!=1)
{
nr*=2;
s*=(x*x-1)/(x-1);
}
}
int main()
{
long long n,x,i;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%lld",&n);
ciur();
for(i=1;i<=n;++i)
{
scanf("%lld",&x);
descompune(x);
printf("%lld %lld\n",nr,s);
}
return 0;
}