Pagini recente » Cod sursa (job #1809952) | Cod sursa (job #946364) | Cod sursa (job #333226) | Cod sursa (job #1929082) | Cod sursa (job #1423719)
#include<cstdio>
#define MAX 1000010
long long n,pr;
int nd;
bool V[MAX];
int T[MAX/2],t;
inline long long pow(long long x,int p)
{
long long pr=1;
while(p!=1)
{
if(p%2==0)
{
x=(1LL*x*x);
p=p/2;
}
else
{
pr=(pr*x);
p=p-1;
}
}
return (pr*x);
}
int main()
{
FILE *in,*out;
in=fopen("ssnd.in","r");
out=fopen("ssnd.out","w");
fscanf(in,"%d",&t);
int i,j;
int nx=0;
for(i=2;i<=MAX;i++)
{
if(V[i]==0)
{
T[++nx]=i;
for(j=i;j<=MAX/i;j++)
V[i*j]=1;
}
}
int nr=1;
long long s=1;
for(int k=1;k<=t;k++)
{
fscanf(in,"%lld",&n);
nr=1;
s=1;
for(j=1;j<=nx && 1LL*T[j]*T[j]<=n;j++)
{
if(n%T[j])
continue;
pr=1,nd=0;
while(n!=1 && n%T[j]==0)
{
nd++;
n=n/T[j];
};
nr=nr * (nd+1);
s=(s* (pow(1LL*T[j],nd+1)-1)/(T[j]-1))%9973;
}
if(n>1)
{
nr=nr *2;
s=(s*((n*n)-1)/(n-1))%9973;
}
fprintf(out,"%d %d\n",nr,s);
}
fclose(in);
fclose(out);
return 0;
}