Pagini recente » Cod sursa (job #2365903) | Istoria paginii runda/oni2014_ziua_viii/clasament | Istoria paginii info-oltenia-2018/individual/solutii | Cod sursa (job #1222179) | Cod sursa (job #1487578)
#include<cstdio>
#include<bitset>
#define MOD 9973
using namespace std;
bitset<1001000>c;
long long n,x,y,s1,s2,p,v[1001000];
int t,i,a,j,nr;
FILE *f,*g;
void cmmdc(long long n,long long a,long long &x,long long &y){
if(a==0){
x=1;
y=0;
return;
}
long long xa,ya;
cmmdc(a,n%a,xa,ya);
x=ya;
y=xa-(n/a)*ya;
}
int main(){
f=fopen("ssnd.in","r");
g=fopen("ssnd.out","w");
c[1]=1;
for(i=2;i<=1000000;i++){
if(c[i]==0){
v[++nr]=i;
for(j=i+i;j<=1000000;j+=i){
c[j]=1;
}
}
}
fscanf(f,"%d",&t);
while(t--){
s1=s2=1;
fscanf(f,"%lld",&n);
for(i=1;i<=nr&&v[i]*v[i]<=n;i++){
a=0;
p=1;
while(n%v[i]==0){
a++;
p=(p*v[i])%MOD;
n/=v[i];
}
if(p>1){
p=(p*v[i])%MOD-1;
if(p<0)
p+=MOD;
cmmdc(MOD,v[i]-1,x,y);
if(y<0)
y=(y+((-y)/MOD+1)*MOD)%MOD;
s2=(s2*y*p)%MOD;
}
s1*=a+1;
}
if(n>1){
s1*=2;
p=n;
n=(n*n)%MOD-1;
if(n<0)
n+=MOD;
cmmdc(MOD,p-1,x,y);
if(y<0)
y=(y+((-y)/MOD+1)*MOD)%MOD;
s2=(s2*y*n)%MOD;
}
fprintf(g,"%lld %lld\n",s1,s2);
}
fclose(f);
fclose(g);
return 0;
}