Pagini recente » Cod sursa (job #542533) | Cod sursa (job #116581) | Cod sursa (job #1546212) | Cod sursa (job #1424680) | Cod sursa (job #1340380)
#include <iostream>
#include <fstream>
#define prim 9973
#define MAXN 1000000
#define LL long long int
using namespace std;
int T,K,p[100000]; bool v[MAXN+10];
void sieve(){
int i,j;
for (i=2; i<=MAXN; i++)
if (!v[i]){
p[++K]=i;
for (j=2*i; j<=MAXN; j+=i)
v[j]=1;
}
}
int fpow(int x, int p){
LL res=1;
while (p){
if (p&1)
res=(res*x)%prim;
x=(x*x)%prim;
p>>=1;
}
return res;
}
int main(){
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
fin >> T;
sieve();
int i,cnt,sum,pt; LL N;
while (T--){
fin >> N;
if (N==1){
fout << 1 << " " << 1 << "\n";
continue;
}
cnt=sum=1;
for (i=1; i<=K && N!=1; i++)
if (N%p[i]==0){
pt=0;
while (N%p[i]==0) N/=p[i],pt++;
cnt*=(pt+1);
sum=(sum*((fpow(p[i]%prim,pt+1)-1+prim)%prim))%prim;
sum=(sum*fpow((p[i]-1)%prim,prim-2))%prim;
}
if (N!=1){
cnt*=2;
sum=(sum*((N+1)%prim))%prim;
}
fout << cnt << " " << sum << "\n";
}
return 0;
}