Pagini recente » Cod sursa (job #2656044) | Cod sursa (job #2404898) | Cod sursa (job #3166648) | Cod sursa (job #1488459) | Cod sursa (job #1628718)
#include<cstdio>
#include<bitset>
#define MOD 9973
using namespace std;
bitset<1001000>w;
long long t,nr,n,i,j,a,b,x,y,ss,sn,p,v[1001000];
FILE *f,*g;
void cmmdc(long long a,long long b,long long &x,long long &y){
if( b == 0 ){
x=1;
y=0;
return;
}
long long xa,ya;
cmmdc( b, a % b, xa, ya );
x = ya;
y = xa - ( a / b ) * ya;
return;
}
int main(){
f=fopen("ssnd.in","r");
g=fopen("ssnd.out","w");
w[1] = 0;
for(i=2; i<=1000000; i++){
if( !w[i] ){
v[++nr] = i;
for(j=i+i; j<=1000000; j+=i){
w[j] = 0;
}
}
}
fscanf(f,"%d",&t);
while(t--){
fscanf(f,"%lld",&n);
sn = ss = 1;
b = n;
for(i=1; i<= n && v[i] <= n / v[i]; i++){
a = 0;
p = 1;
while( n % v[i] == 0 ){
a ++;
n /= v[i];
p = ( p * v[i] ) % MOD;
}
sn *= ( a + 1 );
if( p != 1 ){
p = ( p * v[i] ) % MOD - 1;
if( p < 0 )
p += MOD;
x = y = 0;
cmmdc( MOD, v[i] - 1, x, y );
if( y < 0 )
y = ( y + ( ( - y ) / MOD + 1) * MOD ) % MOD;
ss = ( ss * y * p ) % MOD;
}
}
if( n > 1 ){
sn *= 2;
p = n;
n = ( n * n ) % MOD - 1;
if( n < 0 )
n += MOD;
x = y =0;
cmmdc( MOD, p - 1, x, y );
if( y < 0 )
y = ( y + ( ( - y ) / MOD + 1) * MOD ) % MOD;
ss = ( ss * y * n ) % MOD;
}
fprintf(g,"%lld %lld\n",sn,ss);
}
fclose(f);
fclose(g);
return 0;
}