Pagini recente » Cod sursa (job #549167) | Cod sursa (job #1086699) | Cod sursa (job #2867423) | Cod sursa (job #2193903) | Cod sursa (job #419379)
Cod sursa(job #419379)
#include<stdio.h>
FILE *f,*g;
long long put(long long a,long long b)
{ long long i=2; long long rez=a;
for(i=2;i<=b;i++) rez=rez*a;
return rez;
}
int t,viz[1005000],s,nr; long long i,j,n,prim[1005000],x,d,k;
int main()
{ f=fopen("ssnd.in","r"); g=fopen("ssnd.out","w");
fscanf(f,"%d",&t);
i=2;
while(i<=1000000) { if(viz[i]==0) { j=2*i; while(j<=1000000) { viz[j]=1; j+=i; } } if(i==2) i++; else i+=2; }
n=0;
for(i=2;i<=1000000;i++) if(!viz[i]) { n++; prim[n]=i; }
for(i=1;i<=t;i++)
{ fscanf(f,"%lld",&x);
s=1; nr=1; d=1;
while(prim[d]*prim[d]<=x&&x!=1)
{ k=0;
while(x%prim[d]==0) { x/=prim[d]; k++; }
nr=nr*((k+1)%9973); s=(((put(prim[d],k+1)-1)/(prim[d]-1)%9973)*s)%9973;
d++;
}
if(x!=1) { nr=(nr*2)%9973; s=((((x*x-1)/(x-1))%9973)*s)%9973; }
fprintf(g,"%d %d\n",nr,s);
}
fclose(g);
return 0;
}