Pagini recente » Cod sursa (job #268465) | Cod sursa (job #2010229) | Cod sursa (job #2036084) | Cod sursa (job #1919740) | Cod sursa (job #862589)
Cod sursa(job #862589)
#include <stdio.h>
#include <math.h>
#include <bitset>
using namespace std;
FILE *f=fopen("ssnd.in","r");
FILE *g=fopen("ssnd.out","w");
//bitset <1000010> v;
int t,nr,p,m,v[1000010],nr1;
long long div,div2,s,x,l,maxi,a[1001],maxim,i,j,maxim1;
void ciur()
{
int i,j;
v[1]=2;
nr1=1;
for(i=3;i<=1000;i+=2)
if (v[i]==0)
{
nr1++;
v[nr1]=i;
for(j=i*i;j<=1000000;j+=2*i)
v[j]=1;
}
for(i=1001;i<=maxim;i+=2)
if (v[i]==0)
{
nr1++;
v[nr1]=i;
}
}
int main()
{
fscanf(f,"%d",&t);
ciur();
for(i=1;i<=t;i++)
{
fscanf(f,"%lld",&x);
nr=1;
s=1;
m=trunc(sqrt(x));
l=x;
j=1;
while(v[j]<=m && j<=nr1 && l!=1)
{
if (x%v[j]==0)
{
p=0;
div=1;
while(l%v[j]==0){
p++;l=l/v[j];
div=div*v[j];
}
div=div*v[j]-1;
s=(s*(div/(v[j]-1)))%9973;
nr=nr*(p+1);
}
j++;
}
if (l!=1){ l=l%9973;nr=nr*2;s=(s*(l*l-1)/(l-1))%9973;}
fprintf(g,"%d %d\n",nr,s);
}
fclose(g);
return 0;
}