Pagini recente » Cod sursa (job #2591463) | Cod sursa (job #676418) | Cod sursa (job #1948256) | Cod sursa (job #2536801) | Cod sursa (job #936038)
Cod sursa(job #936038)
#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(){
prime[++nrp]=2;
for(register int i = 3; i<=1000000; i+=2)
if(!v[i]){
prime[++nrp]=i;
for(register long long j = (long long)i*i, cresc=2*i; j <=1000000; j+=cresc)
v[j]=1;
}
}
long long power(int a, int b){
if(b==1)
return a;
if(b%2==0)
return power(a*a, b/2);
if(b%2==1)
return a* power(a*a, (b-1)/2);
}
void rezolvare(){
long long N;
fscanf(in,"%lld",&N);
int i = 1, Nrdiv=1, pow;
long long suma=1;
while(i<=nrp && prime[i]<=N){
pow=0;
while(N%prime[i]==0){
N/=prime[i];
pow++;
}
if(pow){
Nrdiv=Nrdiv*(pow+1);
suma=suma*((power(prime[i],pow+1)-1)/(prime[i]-1));
}
++i;
}
if(N>1){
Nrdiv=Nrdiv*2;
suma=suma*((N*N-1)/(N-1));
}
fprintf(out, "%d %lld\n",Nrdiv,suma%MOD);
}
int main(){
in=fopen("ssnd.in","r");
out=fopen("ssnd.out","w");
ciur();
for(fscanf(in,"%d",&T); T; T--)
rezolvare();
CLOSE
}