Pagini recente » Cod sursa (job #1921867) | Monitorul de evaluare | Cod sursa (job #2194441) | Cod sursa (job #2074347) | Cod sursa (job #2274802)
#include <fstream>
#define MOD 9973
#define MAX 1000001
std::ifstream INPUT_FILE("ssnd.in");
std::ofstream OUTPUT_FILE("ssnd.out");
int t;
long long size,nrPrime[MAX];
bool viz[MAX];
void ciur(){
for(long i=2;i<=MAX;++i){
if(!viz[i]){
nrPrime[++size]=i;
for(long j=2;i*j<=MAX;++j) viz[i*j]=1;
}
}
}
void solve(long long x){
long long sum,nrDiv;
sum=nrDiv=1;
for(int i=1;i<=size && nrPrime[i]*nrPrime[i]<=x;++i){
long long d,demPowa;
d=0;
demPowa=nrPrime[i];
while(x%nrPrime[i]==0){
x/=nrPrime[i];
++d;
demPowa*=nrPrime[i];
}
if(d>0){
sum=(sum*(demPowa-1)/(nrPrime[i]-1))%MOD ;
nrDiv*=(d+1);
}
}
if (x>1){
nrDiv*=2;
sum=(sum*(x*x-1)/(x-1))%MOD;
}
OUTPUT_FILE<<nrDiv<<" "<<sum<<"\n";
}
int main() {
std::ios::sync_with_stdio(false);
INPUT_FILE.tie(0);
OUTPUT_FILE.tie(0);
ciur();
INPUT_FILE>>t;
for(int i=0;i<t;++i){
long long x;
INPUT_FILE>>x;
solve(x);
}
return 0;
}