Pagini recente » Cod sursa (job #125065) | Cod sursa (job #2353927) | Cod sursa (job #2274508) | Cod sursa (job #465802) | Cod sursa (job #1464432)
#include <cstdio>
using namespace std;
const int mod=9973;
long long v1[100][2];
char vaz[1000010];
int v[1000000];
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
int t,k,s,nr=0;
long long n,c,nrd;
scanf("%d",&t);
for(int i=2;i<=1000000;i++)
if(vaz[i]==0)
{
v[++nr]=i;
for(long long j=1LL*i*i;j<=1000000;j=j+i) vaz[j]=1;
}
for(int i=1;i<=t;i++)
{
k=0;
scanf("%lld",&n);
for(int j=1;j<=nr;j++)
if(n%v[j]==0)
{
v1[++k][0]=v[j];
while(n%v[j]==0)
{
v1[k][1]++;
n=n/v[j];
}
}
if(n>1) {v1[++k][0]=n;v1[k][1]=1;}
nrd=s=1;
for(int j=1;j<=k;j++)
{
nrd=nrd*(v1[j][1]+1);
c=1;
for(int l=1;l<=v1[j][1]+1;l++) c=c*v1[j][0];
s=(1LL*s*((c-1)/(v1[j][0]-1)))%mod;
}
for(int j=1;j<=k;j++) v1[j][0]=v1[j][1]=0;
printf("%lld %d\n",nrd,s);
}
return 0;
}