Pagini recente » Cod sursa (job #2794610) | Cod sursa (job #3151378) | Cod sursa (job #2964389) | Cod sursa (job #1699957) | Cod sursa (job #791459)
Cod sursa(job #791459)
#include<fstream>
#define MAX 1048576
#define REST 9973
using namespace std;
bool c[MAX];
int prm[MAX];
long long n, a;
void ciur()
{
prm[++prm[0]] = 2;
for(int i = 3; i < MAX; i += 2)
{
if(!c[i])
{
prm[++prm[0]] = i;
for(int j = 2; j * i < MAX; j++)
c[i * j] = true;
}
}
}
int lgput(int val, int put)
{
int x = 1; val %= REST;
while(put)
{
if(put & 1)
x = (x * val) % REST;
val = (val * val) % REST;
put >>= 1;
}
return x;
}
int main()
{
ciur();
ifstream in("ssnd.in"); ofstream out("ssnd.out");
in>>n;
while(n--)
{
in>>a;
int sum = 1, nr = 1, p1, p2;
for(int i = 1; prm[i] * prm[i] <= a; i++)
{
if(a % prm[i]) continue;
int put = 0;
while(!(a % prm[i]))
{
a /= prm[i];
put++;
}
nr *= put + 1;
p1 = (lgput(prm[i], put + 1) - 1) % REST;
p2 = (lgput(prm[i] - 1, REST - 2)) % REST;
sum = (((sum * p1) % REST) * p2) % REST;
}
if(a > 1)
{
nr *= 2;
sum = (1LL * sum * (a + 1) % REST);
}
out<<nr<<" "<<sum<<"\n";
}
in.close(); out.close();
}