Pagini recente » Cod sursa (job #1984769) | Cod sursa (job #1596498) | Cod sursa (job #200439) | Cod sursa (job #3136195) | Cod sursa (job #1350809)
#include<fstream>
#include<cmath>
#include<bitset>
using namespace std;
#define N 1000001
#define MOD 9973
bitset<N> era;
unsigned int prime[N], np;
void ciurul()
{
unsigned int i, j, s = sqrt(N);
for(i = 2; i <= s; i++)
{
if(era[i])
continue;
for(j = i*i; j <= N; j += i)
era[j] = 1;
}
for(i=2; i<= N; i++)
if(!era[i])
prime[np++] = i;
}
unsigned int _pow(unsigned int a, unsigned int b)
{
char i;
unsigned int rez = 1;
for(i=0; ((unsigned int)1<<i) <= b; i++)
{
if((1<<i) & b)
rez = (rez*(a%MOD))%MOD;
a = (a*(a%MOD))%MOD;
}
return rez;
}
int main()
{
unsigned long long t, i, j, nrdiv, sdiv, d, nr;
fstream in("ssnd.in", fstream::in);
fstream out("ssnd.out", fstream::out);
ciurul();
in>>t;
for(i=0; i<t; i++)
{
nrdiv = 1;
sdiv = 1;
in >> nr;
j = 0;
while(nr>1)
{
d = 0;
while(nr%prime[j] == 0 && nr)
{
nr /= prime[j];
d++;
}
nrdiv *= (d+1);
sdiv *= (((_pow(prime[j]%MOD, (d+1)%MOD)-1)%MOD)/((prime[j] - 1)%MOD))%MOD;
j++;
}
out<<nrdiv<<" "<<sdiv<<'\n';
}
in.close();
out.close();
}