Pagini recente » Cod sursa (job #1623580) | Cod sursa (job #2950943) | Cod sursa (job #1376464) | Cod sursa (job #2155871) | Cod sursa (job #489874)
Cod sursa(job #489874)
#include <fstream>
#include <math.h>
#define NMAX 1000005
#define rest 9973
using namespace std;
bool C[NMAX+30];
int Prim[NMAX+30];
inline void ciur()
{
int k=1;
Prim[1]=2;
for(int i=3;i<=NMAX;i+=2)
{
if(!C[i])
{
Prim[++k]=i;
if(i<=1000)
for(int j=i*i;j<=NMAX;j=j+2*i)
C[j]=true;
}
}
}
long long pow(int x,int y)
{
long long ret=1;
if(y==0) return 1;
if(y==1) return x;
else if(y%2==0)
{
ret=pow(x,y/2);
return (ret*ret);
}
else
{
ret=(pow(x,(y-1)/2));
return (x*ret*ret);
}
}
void citire()
{
fstream fin("ssnd.in",ios::in);
fstream fout("ssnd.out",ios::out);
int T;
long long x;
int nr;
long long s;
int p=0;
fin>>T;
for(int j=1;j<=T;j++)
{
nr=1;s=1;
fin>>x;
for(int i=1;1LL*Prim[i]*Prim[i]<=x;i++)
{
p=0;
while(x%Prim[i]==0)
{
p++;
x/=Prim[i];
}
if(p)
{
nr=nr*(p+1);
s= (s*( ( ( pow(Prim[i],p+1) -1)/ (Prim[i]-1) ) %rest) )%rest;
}
}
if(x>1)
{
nr=nr*2;
s=(s*((x+1)%rest))%rest;
}
fout<<nr<<" "<<s<<"\n";
}
fin.close();
fout.close();
}
int main(int argc, char* argv[])
{
ciur();
citire();
}