Pagini recente » Cod sursa (job #571105) | Cod sursa (job #1388246) | Cod sursa (job #897054) | Cod sursa (job #1853225) | Cod sursa (job #1021745)
#include <iostream>
#include <cstdio>
#include <cmath>
#define NMAX 10000000000
FILE *f,*g;
char A[NMAX];
using namespace std;
int main(){
f=fopen("ssnd.in","r");
g=fopen("ssnd.out","w");
int t;
long i,nr=0,j,pp;
long long x,xx,n;
fscanf(f,"%d",&t);
n=NMAX-1;
int k,p=2;
while(p<=n)
{
if(A[p]==0)
{
nr++;
k=p+p;
while(k<=n)
{
A[k]=1;
k=k+p;
}
}
p++;
}
for(i=1;i<=t;i++)
{
fscanf(f,"%d",&x);
int sum;
xx=x;
long nr;
pp=x/2;
sum=1;
nr=1;
int kk=0;
int div[100000][2];
for(j=2;j<=pp;j++)
{
if(A[j]==0)
{
if(x%j==0)
{
kk++;
div[kk][1]=0;
div[kk][0]=j;
while((x!=1)&&(x%j==0))
{
div[kk][1]++;
x=x/j;
}
}
}
if(x==1) break;
}
for(j=1;j<=kk;j++)
{
nr=nr*(div[j][1]+1);
long pt;
pt=pow(div[j][0],div[j][1]+1);
sum=sum*((pt-1)/(div[j][0]-1));
sum=sum%9973;
}
if(nr==1&&sum==1)
{
nr++;
sum=sum+xx;
sum=sum%9973;
}
fprintf(g,"%d %d\n",nr,sum);
}
return 0;
}