Pagini recente » Cod sursa (job #395283) | Cod sursa (job #711373) | Cod sursa (job #2251841) | Cod sursa (job #459976) | Cod sursa (job #2432999)
#include <fstream>
#include <cmath>
#include <bitset>
using namespace std;
const int dim=1200000;
const int MOD=9973;
bitset <dim>a;
//bool a[dim];
long long prime[80000];
long long sumd (int a, int b)
{
int i;
long long P=a;
for(i=1;i<=b;i++)
P=P*1LL*a;
P=(P-1)/(a-1);
P=P%MOD;
return P;
}
int main()
{
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long n,x,i,j,nr=0;
long long Sd=1,nrd=0,p=0;
n=dim;
x=sqrt(n);
for(j=4;j<=n;j=j+2)
a[j]=1;
for(i=3;i<=x;i=i+2)
if(a[i]==0)
for(j=i*i;j<=1000002;j=i+j)
a[j]=1;
a[0]=1;
a[1]=1;
prime[1]=2;
nr=1;
for(i=3;i<=1000002;i=i+2)
if(a[i]==0)
prime[++nr]=i;
/**********************************************/
// g<<nr<<'\n';
// for(i=1;i<=nr;i=i++)
// g<<prime[i]<<'\n';
/**********************************************/
f>>n;
for(j=1;j<=n;j++)
{
f>>x;
nrd=1;
Sd=1;
p=0;
while(x%2==0)
{
p++;
x=x/2;
}
nrd=nrd*(p+1);
if(p>0)
{
Sd=Sd*sumd(2,p);
}
for(i=1; prime[i]*prime[i]<=x; i++)
{
if(x%prime[i]==0)
{
p=0;
while(x%prime[i]==0)
{p++; x=x/prime[i];}
nrd=nrd*(p+1);
Sd=Sd*sumd(prime[i],p);
}
}
if(x>1)
{
nrd=nrd*2;
Sd=Sd*sumd(x,1);
}
g<<nrd<<" "<<Sd%MOD<<'\n';
}
return 0;
}