Pagini recente » Cod sursa (job #2103478) | Cod sursa (job #2667918) | Cod sursa (job #2413352) | Cod sursa (job #1302720) | Cod sursa (job #1745181)
#include <fstream>
#include <vector>
#define REST 9973
using namespace std;
bool b[1000006];
vector<long long> v;
vector<int> pr;
void read();
void sieve();
void solve();
int pow(int, int);
int main(){
read();
sieve();
solve();
return 0;
}
void read(){
ifstream fin ("ssnd.in");
long long x;
int test;
fin >> test;
while (test--)
fin >> x,
v.push_back(x);
fin.close();
}
void sieve(){
for (int d = 2; d * d <= 1000001; ++d)
if (!b[d])
for (int i = d * d; i <= 1000001; i += d)
b[i] = 1;
for (int i = 2; i <= 1000001; ++i)
if (!b[i])
pr.push_back(i);
}
void solve(){
ofstream fout ("ssnd.out");
for (unsigned int i = 0; i < v.size(); ++i){
long long n = v[i];
int nr(1), sm(1);
for (unsigned int j = 0; j < pr.size() && pr[j] * pr[j] <= n; ++j){
if (n % pr[j])
continue;
int r = 0;
while(!(n % pr[j]))
n /= pr[j],
++r;
nr *= (r+1);
int p1 = (pow(pr[j], r+1)-1) % REST;
int p2 = (pow(pr[j]-1, REST-2)) % REST;
sm = (((sm * p1)%REST)*p2)%REST;
}
if (n > 1)
nr *= 2,
sm = (1LL * sm * (n+1)%REST);
fout << nr << " " << sm << "\n";
}
fout.close();
}
int pow(int x, int y){
int r = 1;
x %= REST;
for (; y; y >>= 1){
if (y & 1)
r *= x,
r %= REST;
x *= x;
x %= REST;
}
return r;
}