Pagini recente » Cod sursa (job #2219762) | Cod sursa (job #652765) | Cod sursa (job #202754) | Cod sursa (job #2404374) | Cod sursa (job #1927542)
#include <fstream>
#include <cstdio>
#include <cmath>
#include <bitset>
#define MOD 9973
#define VAL 1000005
using namespace std;
long long T, cnt, k, e;
long long v[VAL], K;
long long N, i, j, nr;
long long NRDIV, P;
long long SUM, NR;
bitset<VAL> ok;
int poz=0;
char buff[VAL];
long long citeste()
{
long long nr=0;
while (buff[poz]<'0' || buff[poz]>'9')
if (++poz==VAL)
fread(buff, 1, VAL, stdin), poz=0;
while (buff[poz]>='0' && buff[poz]<='9')
{
nr=nr*10+buff[poz]-'0';
if (++poz==VAL)
fread(buff, 1, VAL, stdin), poz=0;
}
return nr;
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
ok[1]=ok[0]=1;
for (i=2; i<=VAL; i++)
{
if (ok[i]==0)
{
v[++K]=i;
for (j=i*i; j<=VAL; j+=i)
ok[i]=1;
}
}
T=citeste();
for (cnt=1; cnt<=T; cnt++)
{
N=citeste();
SUM=1;
NRDIV=1;
for (k=1; 1LL*v[k]*v[k]<=N; k++)
{
nr=v[k];
e=1;
while (N % nr==0)
{
N/=nr;
e++;
}
P=pow(nr, e);
NRDIV*=e;
NR=(P-1) / (nr-1);
SUM*=NR;
}
if (N!=1)
{
N%=MOD;
NRDIV*=2;
NR=(N*N-1) / (N-1);
NR%=MOD;
SUM*=NR;
}
SUM%=MOD;
printf("%lld %lld\n", NRDIV, SUM);
}
return 0;
}