Pagini recente » Cod sursa (job #2833) | Cod sursa (job #10031) | Cod sursa (job #343899) | Cod sursa (job #2487278) | Cod sursa (job #1293562)
#include <cstdio>
#include <fstream>
#define prim 9973
#define maxim 1000000
using namespace std;
FILE *f=fopen("ssnd.in","r");
FILE *g=fopen("ssnd.out","w");
long long n;
int8_t car[maxim+5];
int pr[100000],nrpr;
int d[100],e[100];
long long put(int t,int k)
{long long tt=1;
while (k!=0) {tt*=t;
k--;}
return tt;
}
void ciur()
{int i,j;
car[2]=1;
for (i=3;i<=maxim;i+=2) car[i]=1;
for (i=3;i*i<=maxim;i+=2) if (car[i]==1) for (j=i*i;j<=maxim;j+=i) car[j]=0;
for (i=2;i<=maxim;i++) if (car[i]==1) pr[++nrpr]=i;
}
void rez()
{int i=1,nr=0;
fscanf(f,"%lld",&n);
while (n!=1)
{if (n%pr[i]==0) {n/=pr[i];
d[++nr]=pr[i];
e[nr]=1;
while (n%pr[i]==0) {n/=pr[i];
e[nr]++;}
}
else if (pr[i]*pr[i]>n)
{d[++nr]=n;
e[nr]=1;
n=1;
}
i++;
}
int di=1;
long long sum=1;
for (i=1;i<=nr;i++) di*=e[i]+1;
for (i=1;i<=nr;i++) sum*=(put(d[i],e[i]+1)-1)/(d[i]-1);
fprintf(g,"%d %d\n",di,sum%prim);
}
int main()
{int t;
ciur();
fscanf(f,"%d",&t);
while (t!=0) {t--;
rez();}
return 0;
}