Pagini recente » Cod sursa (job #2791755) | Cod sursa (job #1123000) | Cod sursa (job #2954426) | Cod sursa (job #1860433) | Cod sursa (job #1247916)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
#define Nmax 1000000
#define RAD 1000
#define Pmax 80000
#define MOD 9973
vector< bool > isPrime(Nmax);
int prim[Pmax], nrP;
int main()
{
int i, j, a, t, sumDiv, nrDiv, p, nr, sum;
prim[0] = 2; nrP = 1;
for(i = 3; i < Nmax; i += 2)
{
while(isPrime[i] == 1 && i < Nmax) i += 2;
if(i < Nmax) prim[nrP++] = i;
if(i < RAD)
for(j = i * i; j < Nmax; j += (i << 1))
isPrime[j] = 1;
}
fin >> t;
for(; t; --t)
{
fin >> a;
sumDiv = nrDiv = 1;
for(i = 0; i < nrP; ++i)
{
sum = 1;
for(nr = 0, p = 1; a % prim[i] == 0; a /= prim[i])
{
++nr;
p *= prim[i];
sum += p;
}
sumDiv *= sum; sumDiv %= MOD;
nrDiv *= nr + 1;
}
if(a != 1)
{
//a este nr prim
nrDiv *= 2;
sumDiv *= a + 1; sumDiv %= MOD;
}
fout << nrDiv << ' ' << sumDiv << '\n';
}
return 0;
}