Pagini recente » Cod sursa (job #2718698) | Cod sursa (job #957413) | Cod sursa (job #1143684) | Cod sursa (job #2383548) | Cod sursa (job #862350)
Cod sursa(job #862350)
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
FILE *f=fopen("ssnd.in","r");
FILE *g=fopen("ssnd.out","w");
const int n=1000000;
unsigned long long nr;
char c;
long long i,a,p,prim[n],cnt=0;
void ciur()
{
int i,j;
for (i=2;i<=n;i++)
prim[i]=1;
for (i=2;i<=n;i++)
if (prim[i])
{
cnt++;
for (j = 2*i;j<=n;j+=i)
prim[j] = 0;
}
}
void desc(unsigned long long nr)
{
long long x,dv=1,sum=1;
long long i=0,d;
long long cnr=nr;
for(i=2;i<=sqrt(cnr);i++)
if(prim[i])
{
d=1;
x=i;
while(nr%i==0){d++;nr/=i;x*=i;}
dv=(long long)(d*dv)%9973;
if(d>1)
{
x--;
x/=(i-1);
sum=(long long)(sum*x)%9973;
}
}
if(nr>1)
{
dv=(dv*2)%9973;
sum=(sum*(nr+1))%9973;
}
fprintf(g,"%lld ",dv);
fprintf(g,"%lld\n",sum);
}
int main()
{
ciur();
fscanf(f,"%d\n",&a);
c=' ';
for(i=1;i<=a;i++)
{
nr=0;
while (c!='\n')
{
fscanf(f,"%c",&c);
if(c=='\n')break;
nr=nr*10+c-'0';
}
c=' ';
desc(nr);
}
fclose(g);
return 0;
}