Pagini recente » Cod sursa (job #2145910) | Cod sursa (job #1129434) | Cod sursa (job #947094) | Cod sursa (job #16389) | Cod sursa (job #1160762)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#define MOD 9973
#include <bitset>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t, nq, nr[100000], sum, part, calc;
bool prim[1000050];
void ciur()
{
nr[nq++] = 2;
for(int d=3; d<=1000; d+=2)
if(prim[d]==0)
for(long long i=d*d; i<=1000050; i+=2*d)
prim[i] = 1;
for(int d=3; d<1000050; d+=2)
if(prim[d]==0)
nr[nq++] = d;
}
int putere(int x, int y)
{
int n=x;
int rez=1;
for(int i=0; 1<<i<=y; i++){
if((1<<i) & y){
rez*=n;
}
n = n*n;
}
return rez;
}
void diviz(long long a)
{
sum=1;
int nrd=1, d, e;
long long var;
for(int i=0; i<nq && nr[i]*nr[i]<=a; i++){
d = calc = nr[i];
e = 0; part = 1;
while(a%d==0){
a/=d;
e++;
part=(part+calc);
calc = (calc*(d%MOD))%MOD;
}
if(e){
nrd *= (e+1);
sum = (sum*(part%MOD))%MOD;
}
}
if(a>1){
nrd *= 2;
sum = (sum*((a+1)%MOD))%MOD;
}
//cerr << suma << "\n";
//printf("%d %d\n", nrd, sum);
fout << nrd << " " << sum << "\n";
}
int main()
{
// freopen("ssnd.in", "r", stdin);
//freopen("ssnd.out", "w", stdout);
//scanf("%d", &t);
fin >> t;
ciur();
long long a=0;
for(int i=0; i<t; i++){
fin >> a;
diviz(1ll*a);
}
return 0;
}