Pagini recente » Cod sursa (job #1553366) | Cod sursa (job #416087) | Cod sursa (job #1226377) | Cod sursa (job #1997104) | Cod sursa (job #2163953)
#include <stdio.h>
#include <iostream>
using namespace std;
FILE *f,*g;
long long prime[79000],nrd=1,sd=0,mod=9973,n;
bool v[1000009];
void ciur()
{
int i,j;
for(i=2;i<=1000009;++i)
{
if(v[i]==0)
{
prime[++prime[0]]=i;
for(j=2*i;j<=1000009;j=j+i)
v[j]=1;
}
}
}
long long putere(long long nr,long long put)
{
long long i,prod=1;
for(i=1;i<=put+1;++i)
prod=(prod*prime[nr]%mod)%mod;
if(prod<=1)
prod=mod+prod%mod;
--prod;
return prod;
}
void invmod(long long a,long long b, long long &x, long long &y)
{
long long x0,y0;
if(!b)
x=1,y=0;
else
{
invmod(b,a%b,x0,y0);
x=y0;
y=x0-a/b*y0;
}
}
void divizori(long long x)
{
long long i,p;
long long xx,yy;
for(i=1;prime[i]*prime[i]<=x;++i)
{
p=0;
while(x%prime[i]==0)
{
++p;
x/=prime[i];
}
if(p)
{
nrd*=(p+1);
sd=sd%mod;
sd*=putere(i,p);
invmod(prime[i]-1,9973,xx,yy);
if(xx<=0)
xx=mod+xx%mod;
sd=(sd*(xx%mod))%mod;
}
}
if(x>1)
{
nrd*=2;
sd=(sd*(x+1)%mod);
}
fprintf(g,"%lld %lld\n",nrd,sd);
}
int main()
{
int i;
long long x;
f=fopen("ssnd.in","r");
g=fopen("ssnd.out","w");
ciur();
fscanf(f,"%lld",&n);
for(i=1;i<=n;++i)
{
nrd=1;
sd=1;
fscanf(f,"%lld",&x);
divizori(x);
}
fclose(f);
fclose(g);
return 0;
}