Pagini recente » Cod sursa (job #2667024) | Cod sursa (job #2195837) | Cod sursa (job #1048186) | Cod sursa (job #1059172) | Cod sursa (job #1928268)
#include <fstream>
#include <cmath>
#include <bitset>
#define MOD 9973
#define VAL 1000005
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int T, cnt, k, e;
int v[VAL], K;
long long N;
int i, j, nr;
int NRDIV, P;
int SUM, NR;
bitset<VAL> ok;
int putere(int nr, int e)
{
int P=1;
while (e!=0)
{
if (e % 2==1)
{
P*=nr;
P%=MOD;
e--;
}
e/=2;
nr*=nr;
nr%=MOD;
}
return P;
}
int main()
{
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;
}
}
fin >> T;
for (cnt=1; cnt<=T; cnt++)
{
fin >> N;
SUM=1;
NRDIV=1;
for (k=1; 1LL*v[k]*v[k]<=N; k++)
{
nr=v[k];
e=0;
while (N % nr==0)
{
N/=nr;
e++;
}
NRDIV*=(e+1);
int P1=(putere(nr, e+1)-1) % MOD;
int P2=putere(nr-1, MOD-2) % MOD;
NR=(P-1) / (nr-1);
SUM=(((SUM*P1) % MOD)*P2) % MOD;
}
if (N!=1)
{
N%=MOD;
NRDIV*=2;
SUM=(1LL*SUM*(N+1)) % MOD;
}
fout << NRDIV << " " << SUM << '\n';
}
fin.close();
fout.close();
return 0;
}