Pagini recente » Cod sursa (job #2954032) | Cod sursa (job #1546721) | Cod sursa (job #2415168) | Cod sursa (job #603464) | Cod sursa (job #489095)
Cod sursa(job #489095)
#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,nr,sum;
long long v[1003],max,prec;
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 %d\n",v[i]+1);
else if (v[i]==1) printf("%d %d\n",nr,sum);
else
{
nr*=2;
sum*=(v[i]*v[i]-1)/(v[i]-1);
sum%=modulo;
printf("%d %d\n",nr,sum);
}
}
}
return 0;
}