Pagini recente » Cod sursa (job #766613) | Cod sursa (job #3292570) | Cod sursa (job #1164993) | Cod sursa (job #3159825) | Cod sursa (job #1122763)
#include <cstdio>
#include <cstring>
using namespace std;
long long bz,ex,s,nr,i,j,n,x,t;
char p[1010/2/8+1];
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
for(i=1;((i*i)<<1)+(i<<2)<=1000000;i++)
{
if(((p[i>>3])&(1<<(i&7)))==0)
for(j=((i*i)<<1)+(i<<1);(j<<1)+1<=1000000;j+=(i<<1)+1)
p[i>>3]|=(1<<(j&7));
}
scanf("%lld",&n);
for(t=1;t<=n;t++)
{
scanf("%lld",&x);
s=1;
nr=1;
if(x==1)
printf("1 1");
else if(x==2)
printf("2 3");
else if(x==3)
printf("2 4");
else
{
if(x%2==0)
{
ex=1;
bz=2;
while(x%2==0)
{
ex++;
x/=2;
bz=bz*2;
}
s=(s*((bz-1)%9973))%9973;
nr=nr*ex;
}
for(i=1;i*i<=x;i++)
if((p[i>>3]&(1<<(i&7)))==0)
{
ex=1;
bz=2*i+1;
while(x%(2*i+1)==0)
{
ex++;
x=x/(2*i+1);
bz=bz*(2*i+1);
}
s=(s*(((bz-1)/(2*i))%9973))%9973;
nr=nr*ex;
}
if(x>1)
{
s=(s*(((x*x-1)/(x-1))%9973))%9973;
nr=nr*2;
}
printf("%lld %lld\n",nr,s);
}
}
return 0;
}