Pagini recente » Cod sursa (job #1155698) | Cod sursa (job #893315) | Cod sursa (job #603775) | Cod sursa (job #955652) | Cod sursa (job #1591112)
#include <fstream>
#define nrmax 3300000
#define mod 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bool ciur[nrmax+1];
unsigned long long n,x,p[500000],z;
void ciure();
unsigned long long ndiv(long long x)
{
long long i,nr,e;
nr=1;
i=1;
while(p[i]*p[i]<=x && i<=z)
{
e=0;
while(x%p[i]==0)
{
x/=p[i];
e++;
}
nr*=(e+1);
i++;
}
if(x>1)
nr*=2;
return nr;
}
unsigned long long power(unsigned long long n,unsigned long long p);
unsigned long long sumdiv(unsigned long long x);
int main()
{
ciure();
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>x;
fout<<ndiv(x)<<' '<<sumdiv(x)%mod<<'\n';
}
return 0;
}
unsigned long long power(unsigned long long n,unsigned long long p)
{
unsigned long long a=1;
while(p>0)
{
if(p%2!=0)
a=(a*n)%mod;
p=p/2;
n=(n*n);
n %= mod;
}
return a;
}
void ciure()
{
ciur[1]=ciur[0]=1;
for( long long int i=2; i<=nrmax; i++)
if(ciur[i]==0)
{
z++;
p[z]=i;
for(long long j=i*i; j<=nrmax; j+=i)
ciur[j]=1;
}
}
unsigned long long sumdiv(unsigned long long x)
{
int sum=1,i=1,e,s=0,j;
while(p[i]*p[i]<=x && i<=z)
{
s=0;
e=0;
while(x%p[i]==0)
{
x/=p[i];
e++;
}
for(j=0;j<=e;++j)
s+=power(p[i],j);
sum*=s%mod;
i++;
}
if(x>1)
sum*=(x+1)%mod;
return sum;
}