Pagini recente » Cod sursa (job #146587) | Rating Mirt Alexandru (alexmirt) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #406776)
Cod sursa(job #406776)
#include <cstdio>
#include <fstream>
using namespace std;
#define file_in "ssnd.in"
#define file_out "ssnd.out"
#define Mod 9973
int T,N,i,inv[1000000],e,d,nrd,suma,p,n;
int my_pow(int a,int b)
{
int t;
if (!b)
return 1;
t=my_pow(a,b>>1);
t=(t*t)%Mod;
if (b&1)
t=(t*a)%Mod;
return t;
}
int main()
{
//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);
while(T--)
{
//scanf("%d", &N);
fin >> N;
nrd=suma=1;
n=N;
for (i=2;i*i<=N;++i)
{
if (N%i!=0)
continue;
e=0;
int ee=1;
while(n%i==0)
{
n/=i;
e++;
ee*=i;
}
nrd*=(e+1);
suma*=((ee*i-1)%Mod);
suma%=Mod;
suma*=inv[i-1];
suma%=Mod;
}
if (n>1)
{
nrd*=2;
suma*=((n*n-1)%Mod);
suma%=Mod;
suma*=inv[n-1];
suma%=Mod;
}
//printf("%d %d\n", nrd,suma);
fout << nrd <<" " << suma<<"\n";
}
//fclose(stdin);
//fclose(stdout);
return 0;
}