Pagini recente » Cod sursa (job #1976784) | Cod sursa (job #713503)
Cod sursa(job #713503)
#include <fstream>
#include <cmath>
#include <vector>
std::vector<unsigned int> v(1,2);
bool c [1000000];
int main (void)
{
std::vector<unsigned int>::iterator ptrv(v.begin());
bool *ptrc(c + 3);
long long i;
bool *ptr3;
const bool *const LIMIT(c + 1000001);
do
{
if (!*ptrc)
{
i = ptrc - c;
v.push_back(i);
for (ptr3 = ptrc + i; ptr3 < LIMIT ; ptr3 += i)
*ptr3 = true;
}
ptrc += 2;
}
while (ptrc < LIMIT);
std::ifstream input("ssnd.in");
unsigned short t;
unsigned short p;
unsigned int d;
long long s;
unsigned int card;
input >> t;
std::ofstream output("ssnd.out");
do
{
input >> i;
ptrv = v.begin();
s = 1;
card = 1;
p = 0;
do
{
while (!(i % *ptrv))
{
i /= *ptrv;
++p;
if (i == 1)
break;
}
if (p)
{
d = *ptrv;
card *= p + 1;
s *= (pow(d,p + 1) - 1) / (d - 1);
p = 0;
}
++ptrv;
}
while (i != 1);
output << card << ' ' << s % 9973 << '\n';
--t;
}
while (t);
input.close();
output.close();
return 0;
}