Pagini recente » Diferente pentru implica-te/arhiva-educationala intre reviziile 82 si 83 | Cod sursa (job #3137066) | Cod sursa (job #1561680) | Cod sursa (job #431731) | Cod sursa (job #3259519)
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long ridicare(long long a, int n) {
long long rasp = 1;
while(n > 0) {
if(n % 2 == 1)
rasp = rasp * a;
a = a * a;
n /= 2;
}
return rasp;
}
const int MOD = 9973;
int main() {
int t, nr_div, d, p;
long long x, sum_div;
f>>t;
for(int i = 1; i<=t; i++){
f>>x;
nr_div = 1;
sum_div = 1;
d = 2;
while(x>1){
if(x%d==0){
p = 0;
while(x%d==0){
p++;
x /= d;
}
nr_div *= (p+1);
sum_div = (sum_div*(ridicare(d, p+1)-1)/(d-1));
}
d++;
if(x>1 && d*d>x){
d=x;
}
}
g<<nr_div % MOD <<" "<<sum_div % MOD <<"\n";
}
return 0;
}