Pagini recente » Cod sursa (job #2707869) | Cod sursa (job #349544) | Cod sursa (job #73014) | Cod sursa (job #2393595) | Cod sursa (job #936007)
Cod sursa(job #936007)
#include<cstdio>
#define CLOSE fclose(in); fclose(out); return 0;
using namespace std;
FILE *in,*out;
const int MOD = 9973;
int T,v[1000100],prime[100000],nrp;
void ciur(){
for(register int i =4; i <=1000000; i+=2)
v[i]=1;
prime[++nrp]=2;
for(register int i = 3; i*i<=1000000; i+=2)
if(!v[i]){
prime[++nrp]=i;
for(register int j = i*i; j <=1000000; j+=i)
v[j]=1;
}
}
int power(int a, int b){
if(b==1)
return a;
if(b%2==0)
return power(a*a%MOD, b/2)%MOD;
if(b%2==1)
return a* power(a*a%MOD, (b-1)/2) %MOD;
}
void rezolvare(){
long long N;
fscanf(in,"%lld",&N);
int i = 1, Nrdiv=1, suma=1, pow;
while(i<nrp && prime[i]<=N){
pow=0;
while(N%prime[i]==0){
N/=prime[i];
pow++;
}
if(pow){
Nrdiv=Nrdiv*(pow+1)%MOD;
suma=suma*((power(prime[i],pow+1)-1)/(prime[i]-1)) %MOD;
}
++i;
}
fprintf(out, "%d %d\n",Nrdiv,suma);
}
int main(){
in=fopen("ssnd.in","r");
out=fopen("ssnd.out","w");
ciur();
for(fscanf(in,"%d",&T); T; T--)
rezolvare();
CLOSE
}