Pagini recente » Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #929491)
Cod sursa(job #929491)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
FILE*fin=fopen("ssnd.in","r");
FILE*fout=fopen("ssnd.out","w");
int i,j,k,m,l,n,a,rasp,val[1000005],sum,prim[1000005],p;
//vector <int> v;
char v[200000];
int main()
{
for (i=1;(i<<1)+1<100000;i++)
if (v[i]==0)
for(j=(i<<2)-i+1;(j<<1)+1<100000;j+=(i<<1)+1)
v[j]=1;
for (i=1;(i<<1)+1<100000;i++)
if (v[i]==0)
prim[++k]=(i<<1)+1;
prim[0]=2;
fscanf(fin,"%d",&n);
k=0;
for(i=1;i<=n;i++)
{
fscanf(fin,"%d",&a);
for (j=0;j<=k;j++)
val[j]=0;
k=0;
l=0;
sum=1;
rasp=1;
while(a!=1)
{
if (a%prim[k]==0)
{
while (a%prim[k]==0)
{
a/=prim[k];
++val[k];
}
++l;
}
else ++k;
}
for (j=0;j<=k;j++)
if (val[j]>0)
{
rasp*=(val[j]+1);
p=1;
while (val[j]>=0)
{
p*=prim[j];
--val[j];
}
p--;
sum*=(p/=(prim[j]-1));
}
fprintf(fout,"%d %d\n",rasp,sum);
}
return 0;
}