Pagini recente » Cod sursa (job #1615361) | Cod sursa (job #1652993) | Cod sursa (job #594971) | Cod sursa (job #501019) | Cod sursa (job #647299)
Cod sursa(job #647299)
#include<fstream>
#define MOD 9973
#define NMAX 1000001
using namespace std;
int prim[NMAX/2],n,nr_prime;
bool viz[NMAX+1000];
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int exp_log(int a,int p) {
int mask=1,sol=1;
a%=MOD;
while(mask<=p) {
if(mask&p)
sol=(sol*a)%MOD;
a=(a*a)%MOD;
mask*=2;
}
return sol;
}
void rez(long long x) {
int i,k,div=1,sum=1;
for(i=1;1LL*prim[i]*prim[i]<=x&&i<=nr_prime;i++)
if(x%prim[i]==0) {
k=1;
while(x%prim[i]==0) {
k++;
x/=prim[i];
}
div*=k;
sum=(sum*(exp_log(prim[i],k)-1))%MOD;
sum=(sum*(exp_log(prim[i]-1,MOD-2)))%MOD;
}
if(x>1) {
div*=2;
sum=(sum*(x+1))%MOD;
}
out<<div<<' '<<sum%MOD<<'\n';
}
void ciur() {
int i,j;
prim[1]=2;
nr_prime=1;
for(i=3;i<NMAX;i+=2)
if(!viz[i]) {
prim[++nr_prime]=i;
for(j=3*i;j<NMAX;j+=(i<<1))
viz[j]=1;
}
}
int main() {
int i;
long long x;
ciur();
in>>n;
for(i=0;i<n;i++) {
in>>x;
rez(x);
}
in.close();
out.close();
return 0;
}