Pagini recente » Borderou de evaluare (job #2668231) | Borderou de evaluare (job #2149601) | Cod sursa (job #777463) | Cod sursa (job #651251)
Cod sursa(job #651251)
#include "stdio.h"
#include "malloc.h"
typedef unsigned int DWORD;
typedef unsigned char BYTE;
DWORD n,i,j,nr,sum,divizor,count,x,tmp;
FILE *f,*g;
BYTE *v;
void ciur()
{
v = (BYTE *)malloc(1000010*sizeof(BYTE));
for(i=2;i<1000010;i++)
{
if(v[i])
{
j = 2*i;
while(j<1000010)
{
v[j] = 0;
j+=i;
}
}
}
}
int main()
{
ciur();
f = fopen("ssnd.in","r");
fscanf(f,"%d",&n);
g = fopen("ssnd.out","w");
for(i =0; i<n;i++)
{
fscanf(f,"%d",&x);
if(x ==1)
{
fprintf(g,"0 0\n");
continue;
}
nr = 1;
sum = 1;
divizor = 2;
while(x!=1)
{
while(!v[divizor])
divizor++;
tmp = x;
count = 0;
while(x%divizor == 0)
{
count++;
x/=divizor;
}
nr*=count+1;
sum*=((tmp/x)*divizor-1)/(divizor-1);
divizor++;
}
fprintf(g,"%d %d\n",nr,sum%9973);
}
fclose(f);
fclose(g);
return 0;
}