Pagini recente » Cod sursa (job #661390) | Cod sursa (job #2000867) | Cod sursa (job #1723002) | Cod sursa (job #516306) | Cod sursa (job #2210073)
#include<fstream>
#include<math.h>
# define MAX 1000000
using namespace std;
const int MOD=9973;
bool isPrime[MAX+1];
long long primes[MAX+1];
int k;
void ciurulLuiEratostene(){
int i, j;
for(i=2;i<=sqrt(MAX);i++){
if(isPrime[i]==false){
primes[++k]=i;
for(j=i*i*1LL;j<=MAX;j+=i)
isPrime[j]=true;
}
}
for(i=sqrt(MAX)+1; i<=MAX; i++)
if(isPrime[i]==false) primes[++k]=i;
}
long long logAB(long long a,long long n, long long &s){
long long aux=a;
long long p=0;
s=1;
while(n%aux==0){
s=(s+aux%MOD)%MOD;
p++;
aux*=a*1LL;
}
return p;
}
int main(){
FILE *in=fopen("ssnd.in","r"), *out=fopen("ssnd.out","w");
int t, i, j;
long long n, d, nrDiv, sumDiv, s;
ciurulLuiEratostene();
fscanf(in,"%i",&t);
for(i=1;i<=t;i++){
fscanf(in,"%lld",&n);
nrDiv=1, sumDiv=1;
j=1;
while(primes[j]<=sqrt(n)){
if(n%primes[j]==0){
d=logAB(primes[j],n, s);
nrDiv*=(d+1)*1LL;
sumDiv=1LL*sumDiv*(s%MOD)%MOD;
}
j++;
}
if(isPrime[n]==false) {
nrDiv*=2*1LL;
sumDiv*=(1+n%MOD)*1LL%MOD;
}
fprintf(out,"%lld %lld\n",nrDiv,sumDiv);
}
fclose(in); fclose(out);
return 0;
}