Pagini recente » Cod sursa (job #797497) | Cod sursa (job #2156763) | Cod sursa (job #233515) | Cod sursa (job #2884438) | Cod sursa (job #1700834)
#include <cstdio>
#define MAXN 1000000
#define MOD 9973
using namespace std;
char ciur[MAXN+1], prime[MAXN];
inline int mypow(int baza, int exp){
int rez=1;
while(exp){
if(exp&1){
rez=(baza*rez)%MOD;
}
baza=(baza*baza)%MOD;
exp>>=1;
}
return rez;
}
int main()
{
FILE *fin, *fout;
int n, nrp, i, t, d, expo, nrd, smd;
nrp=0;
for(i=2; i*i<=MAXN; i++)
if(ciur[i]==0){
prime[nrp++]=i;
for(d=i*i; d<=MAXN; d+=i)
ciur[d]=1;
}
fin=fopen("ssnd.in", "r");
fscanf(fin, "%d", &t);
fout=fopen("ssnd.out", "w");
for(i=0; i<t; i++){
fscanf(fin, "%d", &n);
d=0;
nrd=smd=1;
while(d<nrp && 1LL*prime[d]*prime[d]<=n){
expo=0;
while(n%prime[d]==0){
++expo;
n/=prime[d];
}
nrd*=(expo+1);
smd=(1LL*smd*(mypow(prime[d], expo+1)-1+MOD)*mypow(prime[d]-1, MOD-2))%MOD;
++d;
}
if(n>1){
nrd*=2;
smd=(smd*(n+1))%MOD;
}
fprintf(fout, "%d %d\n", nrd, smd);
}
fclose(fin);
fclose(fout);
return 0;
}