Pagini recente » Cod sursa (job #3542) | Cod sursa (job #1822349) | Cod sursa (job #1560674) | Cod sursa (job #1044251) | Cod sursa (job #2426105)
#include <fstream>
#include <bitset>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int const modulo = 9973;
int const nmax = 1e6;
int prime[1 + nmax], np;
bitset <1 + nmax> ciur;
void computeciur() {
for(int i = 2; i <= nmax; i++){
if(ciur[i] == 0) {
np++;
prime[np] = i;
if(1LL * i * i <= nmax) {
for(int j = i * i; j <= nmax; j += i) {
ciur[j] = 1;
}
}
}
}
}
void solve(long long n){
int ans, sum, fact, temp;
ans = sum = 1;
for(int i = 1; i <= np && 1LL * prime[i] * prime[i] <= n; i++) {
fact = 1;
temp = sum;
while(n % prime[i] == 0){
n /= prime[i];
fact++;
sum = ((sum * (prime[i] % modulo)) + temp) % modulo;
}
ans *= fact;
}
if(n != 1){
ans *= 2;
sum = (sum * (n % modulo) + sum) % modulo;
}
out << ans << ' '<<sum<<'\n';
}
int main()
{
int p;
long long n;
in >> p;
computeciur();
for(int i = 1;i <= p;i++){
in >> n;
solve(n);
}
return 0;
}