Pagini recente » Cod sursa (job #2211438) | Cod sursa (job #2029547) | Cod sursa (job #469249) | Cod sursa (job #1182391) | Cod sursa (job #647300)
Cod sursa(job #647300)
#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");
void rez(long long x) {
int i,j,k,div=1;
long long sum=1;
for(i=1;1LL*prim[i]*prim[i]<=x&&i<=nr_prime;i++)
if(x%prim[i]==0) {
k=1;
j=prim[i];
while(x%prim[i]==0) {
k++;
x/=prim[i];
j*=prim[i];
}
div*=k;
sum*=(j-1)/(prim[i]-1)%MOD;
//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;
sum*=(x*x-1)/(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;
}