Pagini recente » Cod sursa (job #2300707) | Cod sursa (job #134565) | Cod sursa (job #202739) | Cod sursa (job #786396) | Cod sursa (job #1466679)
#include <fstream>
#include <bitset>
using namespace std;
ofstream fout("ssnd.out");
ifstream fin("ssnd.in");
const int NMAX = 1000005;
const int MOD = 9973;
int t, lg, suma, nr;
long long n, p;
long long prime[NMAX];
bitset<NMAX> ciur;
void construieste_ciur()
{
ciur[0] = ciur[1] = 1;
for(int i=2; i<NMAX; i++) {
if(!ciur[i]){
prime[++lg] = i;
for(int j=i+i; j<NMAX; j+=i)
ciur[i] = true;
}
}
}
long long pow(long long b, long long e)
{
long long sol = 1;
while(e) {
if(e & 1) sol *= b;
b *= b;
e >>= 1;
}
return sol;
}
int main()
{
construieste_ciur();
fin >> t;
for(int i=1; i<=t; i++)
{
nr = suma = 1;
fin >> n;
for(int j=1; j<=lg && prime[j] * prime[j] <= n; j++) {
if(n % prime[j] == 0) {
p = 0;
while(n % prime[j] == 0) {
n /= prime[j];
p++;
}
nr *= (p + 1);
suma *= ((pow(prime[j], p + 1) - 1) / (prime[j] - 1)) % MOD;
}
}
if(n > 1) {
nr *= 2;
suma = suma * (n + 1) % MOD;
}
fout << nr << ' ' << suma % MOD << '\n';
}
return 0;
}