Pagini recente » Cod sursa (job #2579161) | Cod sursa (job #1655255) | Cod sursa (job #1149049) | Cod sursa (job #74804) | Cod sursa (job #580487)
Cod sursa(job #580487)
#include<fstream>
#define MOD 9973
#define I64 long long
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int Pr[80000],k,i,j,t,sdiv,p,A[1005],B[1005]; I64 n,ndiv;
char Ciur[1000005];
inline void ciur () {
Pr[++k] = 2;
for ( i = 3 ; i <= 1000003 ; i += 2 ){
if ( !Ciur[i] ){
for ( j = i + i + i ; j <= 1000003 ; j += (i<<1) ){
Ciur[j] = 1;
}
Pr[++k] = i;
}
}
}
inline int lgput ( I64 a, int b ){
I64 s = a; int rez = 1;
while ( b ){
if ( b & 1 ){
rez = (1LL*rez * s) % MOD;
}
s = (1LL*s * s) % MOD;
b = b >> 1;
}
return rez;
}
int main () {
ciur();
f >> t;
while ( t-- ){
f >> n;
ndiv = sdiv = 1;
for ( i = 1 ; Pr[i] * Pr[i] <= n && i <= k && n > 1 ; ++i ){
p = 0;
if ( !(n % Pr[i] ) ){
while ( !(n % Pr[i]) ){
++p;
n /= Pr[i];
}
ndiv = 1LL*ndiv * (p + 1);
sdiv = (1LL*sdiv * 1LL*(lgput(Pr[i],p+1) - 1) * 1LL*lgput((Pr[i]-1),MOD-2)) % MOD;
}
}
if ( n > 1 ){
ndiv = (1LL * ndiv) << 1;
sdiv = (sdiv * 1LL*((lgput(n,2) - 1 + MOD) % MOD) * lgput (n-1,MOD-2)) % MOD;
}
g << ndiv << " ";
g << sdiv << "\n";
}
f.close();
g.close();
return 0;
}