Pagini recente » Cod sursa (job #657551) | Cod sursa (job #1065397) | Cod sursa (job #723879) | Cod sursa (job #2272203) | Cod sursa (job #1700833)
#include <cstdio>
#define MAXN 1000000
#define MOD 9973
using namespace std;
int prime[MAXN], low[MAXN+1];
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, j, t, d, expo, nrd, smd;
nrp=0;
for(i=2; i<=MAXN; i++){
if(low[i]==0){
low[i]=i;
prime[nrp++]=i;
}
for(j=0; j<nrp && i*prime[j]<=MAXN && prime[j]<=low[i]; j++)
low[prime[j]*i]=prime[j];
}
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=((smd*(mypow(prime[d], expo+1)-1+MOD)%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;
}