Pagini recente » Cod sursa (job #2964626) | Cod sursa (job #1778108) | Profil Berni97 | Rating Paun Georgel (notpennysboat) | Cod sursa (job #406797)
Cod sursa(job #406797)
#include <cstdio>
#include <fstream>
//#include <ctime>
using namespace std;
#define file_in "ssnd.in"
#define file_out "ssnd.out"
#define Mod 9973
#define Nmax 1000005
//long long my_time;
int T;
long long n,N;
int i,e,d,nrd,suma,p,nd,j,ee;
char viz[Nmax];
int q[Nmax];
int my_pow(int a,int b)
{
int t;
a%=Mod;
if (!b)
return 1;
t=my_pow(a,b>>1);
t=(t*t)%Mod;
if (b&1)
t=(t*a)%Mod;
return t;
}
void ciur()
{
for (i=2;i<Nmax;++i)
if (viz[i]==0)
{
q[++nd]=i;
for (j=i+i;j<Nmax;j+=i)
viz[j]=1;
}
}
int main()
{
//my_time=clock();
//freopen(file_in,"r",stdin);
//freopen(file_out,"w",stdout);
ifstream fin (file_in);
ofstream fout (file_out);
//scanf("%d", &T);
fin >> T;
/*for (i=1;i<Mod;++i)
inv[i]=my_pow(i,Mod-2);*/
ciur();
while(T--)
{
//scanf("%d", &N);
fin >> N;
nrd=suma=1;
n=N;
for (i=1;1LL*q[i]*q[i]<=N;++i)
{
if (N%q[i]!=0)
continue;
e=0;
ee=1;
while(n%q[i]==0)
{
n/=q[i];
e++;
ee*=q[i];
}
nrd*=(e+1);
suma*=((1LL*ee*q[i]-1)%Mod);
suma%=Mod;
suma*=my_pow(q[i]-1,Mod-2);
suma%=Mod;
}
if (n>1)
{
nrd*=2;
suma*=((1LL*n*n-1)%Mod);
suma%=Mod;
suma*=my_pow(n-1,Mod-2);
suma%=Mod;
}
//printf("%d %d\n", nrd,suma);
fout << nrd <<" " << suma<<"\n";
}
//printf("A intrat in %.4lf secunde", (double)((double)clock()-(double)my_time)/CLOCKS_PER_SEC);
//fclose(stdin);
//fclose(stdout);
return 0;
}