Pagini recente » Cod sursa (job #2274781) | Cod sursa (job #698904) | Cod sursa (job #1378405) | Cod sursa (job #737008) | Cod sursa (job #1850984)
#include <iostream>
#include <fstream>
#include <bitset>
using namespace std;
ifstream in ("ssnd.in");
ofstream out ("ssnd.out");
int const mod = 9973;
int nfactor = 0, factorp[1001];
int factor[1001];
int power(int a ,int b){
if(b == 0)
return 1;
else if(b == 1)
return a;
else if((b & 1) == 0){
int result = power(a, b >> 1);
return (result * result) % mod;
} else{
int result = power(a, b >> 1);
return (((result * result) % mod) * a) % mod;
}
}
void descompunere(int n){
int i = 2;
if(n % 2 == 0){
factor[nfactor] = 2;
factorp[nfactor]= 0;
while(n % 2 == 0){
factorp[nfactor]++;
n /= 2;
}
nfactor++;
}
i = 3;
while(i * i <= n){
if(n % i == 0){
factor[nfactor] = i;
factorp[nfactor]= 0;
while(n % i == 0){
factorp[nfactor]++;
n /= i;
}
nfactor++;
}
i += 2;
}
if(1 < n){
factor[nfactor] = n;
factorp[nfactor] = 1;
nfactor++;
}
}
void div(){
int sd = 1 ,p = 1,nr1 ,nr2 ,i;
for(i = 0 ; i < nfactor ; i++){
p = p * (factorp[i] + 1);
nr1 = power(factor[i], factorp[i] + 1) + mod - 1;
nr2 = power(factor[i] - 1, mod - 2);
sd = (((sd * nr1) % mod) * nr2 )% mod;
}
out<<p<<" "<<sd<<'\n';
}
int main()
{
int n ,a ,i;
in>>n;
for(i = 0 ; i < n ;i++){
in>>a;
nfactor = 0;
descompunere(a);
div();
}
return 0;
}