Pagini recente » Cod sursa (job #573201) | Cod sursa (job #892498) | Cod sursa (job #2134352) | Cod sursa (job #1694915) | Cod sursa (job #526832)
Cod sursa(job #526832)
#include<stdio.h>
#define Mod 9973
#define i64 unsigned long long
FILE*f=fopen("ssnd.in","r");
FILE*g=fopen("ssnd.out","w");
i64 T,k,i,pow,nrdiv,x,sdiv;
int Pr[1000000];
char Ciur[1000005];
void ciur (){
for ( int i = 2 ; i <= 1000000; ++i ){
if ( !Ciur[i] ){
for ( int j = i + i ; j <= 1000000 ; j += i )
Ciur[j] = 1;
Pr[++k] = i;
}
}
}
i64 poww(i64 a,i64 n){
i64 p = 1 ;
while ( n != 0 ){
if( n % 2 == 1 )
p = p * a;
a = a * a;
n /= 2;
}
return p;
}
int main () {
ciur();
fscanf(f,"%lld",&T);
while ( T-- ){
fscanf(f,"%lld",&x);
int x2 = x;
nrdiv = sdiv = 1;
for ( i = 1 ; Pr[i] * Pr[i] <= x2 && x != 1 && i <= k ; ++i ){
pow = 0;
while ( !(x % Pr[i] ) ){
x /= Pr[i];
++pow;
}
nrdiv = nrdiv * pow + nrdiv;
sdiv = (sdiv * 1LL *( ( ( poww(Pr[i],pow + 1) - 1 ) / ( Pr[i] - 1 ) ) ) );
}
if ( x != 1 ){
nrdiv *= 2;
sdiv = ( sdiv * ( x + 1 ) );
}
fprintf(g,"%lld ",nrdiv);
fprintf(g,"%lld\n",sdiv%Mod);
}
fclose(f);
fclose(g);
return 0;
}