Pagini recente » Cod sursa (job #3257835) | Cod sursa (job #562927) | Cod sursa (job #636139) | Cod sursa (job #1814809) | Cod sursa (job #2210182)
#include<fstream>
#include<iostream>
#include <bitset>
#include<math.h>
# define MAX 1000005
using namespace std;
const int MOD=9973;
bitset <MAX> isPrime;
//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]==0){
primes[++k]=i;
for(j=i*i*1LL;j<=MAX;j+=i)
isPrime[j]=1;
}
}
for(i=sqrt(MAX)+1; i<=MAX; i++)
if(isPrime[i]==0) primes[++k]=i;
}
long long logAB(long long a,long long &n, long long &s){
long long aux=a, auxN=n;
long long p=0;
s=1;
while(n%aux==0){
s=s+aux%MOD;
p++;
aux*=a*1LL;
auxN=auxN/a;
}
n=auxN; s=s%MOD;
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, nAux;
ciurulLuiEratostene();
fscanf(in,"%i",&t);
for(i=1;i<=t;i++){
fscanf(in,"%lld",&n); nAux=n;
nrDiv=1, sumDiv=1;
j=1;
for(j=1; j<=k && 1LL*primes[j]*primes[j]<=nAux;j++){
if(n%primes[j]==0){
d=logAB(primes[j],n,s);
nrDiv*=(d+1)*1LL;
sumDiv=1LL*(sumDiv%MOD)*(s%MOD)%MOD;
}
}
if(n>1) {
nrDiv*=2*1LL;
sumDiv*=(1+nAux%MOD)*1LL%MOD;
}
fprintf(out,"%lld %lld\n",nrDiv,sumDiv);
}
fclose(in); fclose(out);
return 0;
}