Pagini recente » Cod sursa (job #2191035) | Cod sursa (job #2158774) | Cod sursa (job #782932) | Cod sursa (job #1332629) | Cod sursa (job #580448)
Cod sursa(job #580448)
#include<stdio.h>
#define MOD 9973
#define I64 long long
FILE*f=fopen("ssnd.in","r");
FILE*g=fopen("ssnd.out","w");
int Pr[80000],k,i,j,t,sdiv,ndiv,p; I64 n;
char Ciur[1000005];
inline void ciur () {
Pr[++k] = 2;
for ( i = 3 ; i <= 1000000 ; i += 2 ){
if ( !Ciur[i] ){
for ( j = i + i + i ; j <= 1000000 ; j += (i<<1) ){
Ciur[j] = 1;
}
Pr[++k] = i;
}
}
}
inline int lgput ( int a, int b ){
int s = a; int rez = 1;
while ( b ){
if ( b & 1 ){
rez = (rez * s) % MOD;
}
s = (s * s) % MOD;
b = b >> 1;
}
return rez;
}
int main () {
fscanf(f,"%d",&t);
ciur();
while ( t-- ){
fscanf(f,"%lld",&n);
ndiv = sdiv = 1;
for ( i = 1 ; Pr[i] * Pr[i] <= n && n > 1 ; ++i ){
p = 0;
if ( !(n % Pr[i] ) ){
while ( !(n % Pr[i]) ){
++p;
n /= Pr[i];
}
ndiv = ndiv * (p + 1);
sdiv = (sdiv * 1LL*(lgput(Pr[i],p+1) - 1) * 1LL*lgput((Pr[i]-1),MOD-2)) % MOD;
}
}
if ( n > 1 ){
ndiv = ndiv << 1;
sdiv = (sdiv * 1LL*((n * n) - 1) * 1LL*lgput (n-1,MOD-2)) % MOD;
}
fprintf(g,"%d %d\n",ndiv,sdiv);
}
fclose(f);
fclose(g);
return 0;
}