Pagini recente » Cod sursa (job #107047) | Cod sursa (job #3247844) | Cod sursa (job #1124024) | Cod sursa (job #86743) | Cod sursa (job #2210191)
#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;
}
int main(){
FILE *in=fopen("ssnd.in","r"), *out=fopen("ssnd.out","w");
int t, i, j;
long long n, d, nrDiv, sumDiv, s, aux;
ciurulLuiEratostene();
fscanf(in,"%i",&t);
for(i=1;i<=t;i++){
fscanf(in,"%lld",&n); //nAux=n;
nrDiv=1, sumDiv=1;
for(j=1; 1LL*primes[j]*primes[j]<=n;j++){
d=1; aux=primes[j]; s=1;
while(n%primes[j]==0){
n/=primes[j];
d++;
s=s+aux;
aux*=primes[j];
}
if(d>1){
nrDiv*=d*1LL;
sumDiv=1LL*(s%MOD)%MOD;
}
}
if(n>1) {
nrDiv*=2*1LL;
sumDiv*=(1+n%MOD)*1LL%MOD;
}
fprintf(out,"%lld %lld\n",nrDiv,sumDiv);
}
fclose(in); fclose(out);
return 0;
}