Pagini recente » G2 | Istoria paginii utilizator/vladinho97 | Xor3 | Algebra2 | Cod sursa (job #1009968)
#include <fstream>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
int t, nrp, nrput, aux;
long long nrdiv, sdiv, n, prim[1000001];
bool p[1000001];
void ciur()
{
for (int i=2; i<=1000000; i++)
{
if (p[i]==false)
prim[nrp++]=i;
for (int j=2*i; j<=1000000; j+=i)
p[j]=true;
}
}
int ridput(int b, int p)
{
int r=1;
while (p)
{
if (p%2==0)
{
b*=b;
p/=2;
}
else
{
p--;
r*=b;
}
}
return r;
}
void rezolv(int x)
{
nrput=0;
while(n%x==0)
{
nrput++;
n/=x;
}
nrput++;
sdiv*=((ridput(x, nrput)-1)/(x-1))%9973;
nrdiv*=nrput;
nrput=0;
}
int main()
{
ciur();
fin>>t;
for (int i=0; i<t; i++)
{
nrdiv=1;
sdiv=1;
fin>>n;
for (int i=0; prim[i]*prim[i]<=n && prim[i]!=0; i++)
rezolv(prim[i]);
if (n>1)
{
nrdiv*=2;
sdiv*=((n*n-1)/(n-1))%9973;
}
fout<<nrdiv<<" "<<sdiv%9973<<"\n";
}
return 0;
}