Pagini recente » Cod sursa (job #2273218) | Cod sursa (job #2882017) | Cod sursa (job #814285) | Rating FMI Dragomir Madalina (MadalinaDragomir) | Cod sursa (job #489093)
Cod sursa(job #489093)
#include<cstdio>
#include<math.h>
#include<vector>
#define modulo 9973
using namespace std;
int er[1000003];
int main ()
{
int ka,i,z,lim,j,fact[10000],exp,ok;
long long v[1003],max,prec,sum,nr;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&z);
max=0;
for (i=1; i<=z; i++)
{
scanf("%I64d",&v[i]);
if (v[i]>max) max=v[i];
}
lim=sqrt(max);
ka=0;
for (i=2; i<=lim; i++)
if (er[i]==0)
{
fact[++ka]=i;
for (j=i+i; j<=lim; j+=i)
er[j]=1;
}
for (i=1; i<=z; i++)
{
nr=1; sum=1;
ok=0;
if (v[i]==1) printf("1 1\n");
else
{
for (j=1; j<=ka; j++)
{
if (fact[j]>v[i]) break;
if (v[i]==1) break;
exp=0; prec=v[i];
while (v[i]%fact[j]==0)
{
exp++;
ok=1;
v[i]/=fact[j];
}
nr*=(exp+1);
sum*=(prec/v[i]*fact[j]-1)/(fact[j]-1);
sum%=modulo;
}
if (ok==0) printf("2 %I64d\n",v[i]+1);
else if (v[i]==1) printf("%I64d %I64d\n",nr,sum);
else
{
nr*=2;
sum*=(v[i]*v[i]-1)/(v[i]-1);
printf("%I64d %I64d\n",nr,sum);
}
}
}
return 0;
}