Pagini recente » Istoria paginii runda/becreative24/clasament | Cod sursa (job #419874) | Cod sursa (job #1972129) | Cod sursa (job #2072593) | Cod sursa (job #2515879)
#include <stdio.h>
#define MOD 9973
#define MAX 1000000
#define MAXP 78499
char ciur[MAX + 1];
int p[MAXP];
int main() {
FILE *fin = fopen( "ssnd.in", "r" );
FILE *fout = fopen( "ssnd.out", "w" );
int q, i, exp, k, d, nrd, expc, maxk;
long long S, pow, n, pt;
k = 0;
for ( d = 2; d <= MAX; ++d ) {
if ( ciur[d] == 0 ) {
p[k++] = d;
for ( i = d + d; i <= MAX; i += d ) {
ciur[i] = 1;
}
}
}
maxk = k;
fscanf( fin, "%d", &q );
for ( i = 0; i < q; ++i ) {
fscanf( fin, "%lld", &n );
nrd = 1;
S = 1;
k = 0;
exp = 0;
while ( p[k] * p[k] <= n && maxk > k ) {
pow = 1;
exp = 0;
while ( n % p[k] == 0 ) {
++exp;
n /= p[k];
}
expc = exp;
pow = 1;
pt = p[k];
while ( exp > 0 ) {
if ( exp % 2 == 1 ) {
pow = (pow * pt) % MOD;
}
pt = (pt * pt) % MOD;
exp /= 2;
}
S = (S * ((pow * p[k] - 1) / (p[k] - 1))) % MOD;
nrd *= (expc + 1);
++k;
}
if ( n > 1 ) {
nrd *= 2;
S = (S * ((n * n - 1) / (n - 1))) % MOD;
}
fprintf( fout, "%d %lld\n", nrd, S );
}
fclose( fin );
fclose( fout );
return 0;
}