Pagini recente » Cod sursa (job #1620712) | Cod sursa (job #1118619) | Cod sursa (job #304252) | Cod sursa (job #1118832) | Cod sursa (job #863112)
Cod sursa(job #863112)
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <bitset>
using namespace std;
FILE *f=fopen("ssnd.in","r");
FILE *g=fopen("ssnd.out","w");
int t,k,i,j,ok;
long long v[80010],s,d,y,x,p;
bitset <1000005> pu;
bool ciur(int n)
{
int i,j;
v[0]=1;
v[1]=2;
for (i=4;i<=n;i+=2) pu[i]=1;
for (i=3;i<=n;i+=2)
if (pu[i]==0){
v[0]++;
v[v[0]]=i;
for (j=i+i;j<=n;j=j+i)
pu[j]=1;
}
}
/*
int ridic(int x, int put)
{
int sl=1,p=(x%md);
for (;put;put>>=1,p=(p*p)%md)
if (put&1)
{
sl=(sl*p)%md;
}
return sl;
}*/
int cn;
int main()
{
fscanf(f,"%d",&t);
ciur(1000005);
for (j=1;j<=t;j++){
d=1;
s=1;
fscanf(f,"%lld",&x);
//if (pu[x]==0) fprintf(g,"2 %lld\n",x+1); else {
ok=0;
y=x;
for (i=1;v[i]*v[i]<=y && x>1;i++)
if (x%v[i]==0)
{
k=0;p=1;ok=1; cn=0;
while (x % v[i]==0)
{x=x/v[i];
p=p*v[i];
k++;
}
d=d*(k+1);
s=(s*((p*v[i]-1)/(v[i]-1)))%9973;
//if (x<1000005)
// if (pu[x]==0 ) {d=d*2; s=(s*((x*x-1)/(x-1)))%9973; break;}
}
if (x>1)
{
d=d*2;
s=(s*((x*x-1)/(x-1)))%9973;
}
if (d==1) fprintf(g,"2 %lld\n",x+1); else
fprintf(g,"%lld %lld\n",d,s);
}
return 0;
}