Pagini recente » Cod sursa (job #3297731) | Cod sursa (job #2575596) | Cod sursa (job #1552341) | Cod sursa (job #3267366) | Cod sursa (job #865627)
Cod sursa(job #865627)
#include <stdio.h>
#include<math.h>
FILE *in,*out;
using namespace std;
int t,exponent;
long long nr,n,u,i,j,k;
long long v[5000002];unsigned long long prod;
bool c[1000002];
int main()
{
in=fopen("ssnd.in","rt");
out=fopen("ssnd.out", "wt");
fscanf(in, "%d", &t);
v[++u]=2;
for(i=4;i<=1000001; i+=2)
c[i]=1;
for(i=3;i<=1000001;i+=2)
if (!c[i])
{ v[++u]=i;
for (j=i+i; j<=1000000; j+=i)
c[j]=1;
}
for (i=1 ; i<=t ; i++)
{
fscanf(in, "%lld", &n);
nr=1;
prod=1;
for(k=1;n>1;k++)
if(n%v[k]==0)
{ exponent=0;
while(n%v[k]==0)
{
n/=v[k];
exponent++;
}
//calc nr de divizori
if(exponent)
{
exponent++;
nr*=(exponent);
//calc suma diviz
prod*=(pow(v[k], exponent)-1)/(v[k]-1);
}
}
fprintf(out, "%.lld %.lld\n", nr, prod%9973);
}
fclose(in);
fclose(out);
return 0;
}