Pagini recente » Cod sursa (job #1253976) | Cod sursa (job #131321) | Cod sursa (job #2263718) | Cod sursa (job #2490424) | Cod sursa (job #863725)
Cod sursa(job #863725)
#include <iostream>
#include <bitset>
#include <fstream>
using namespace std;
#define Nmax 1000001
#define modulo 9973
bitset <Nmax> ciur;
int div[80000];
long long l = 0;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
void gen(){
for(int i = 2; i <= Nmax; i++)
if(!ciur[i]){
div[++l] = i;
for(int j = i + i; j <= Nmax; j += i)
ciur[j] = 1;
}
}
inline long long putere(long long a, long long b){
long long raspuns = 1;
a %= modulo;
for(b; b; b >>= 1){
if(b & 1)
raspuns *= a,
raspuns %= modulo;
a *= a;
a %= modulo;
}
return raspuns;
}
void descomp(long long a){
long long nr = 1, ns = 1;
for(long long i = 1; i <= l && div[i] * div[i] <= a; ++i){
if(a % div[i])
continue;
long long contor = 0;
while(a % div[i] == 0)
a /= div[i],
contor++;
nr *= (contor + 1);
long long putere1 = (putere(div[i], contor + 1) - 1) % modulo;
long long putere2 = putere(div[i] - 1, modulo - 2) % modulo;
ns = ((( ns * putere1) % modulo ) * putere2) % modulo;
}
if(a > 1)
nr *= 2,
ns = (ns * (a + 1) % modulo);
g << nr << " " << ns << "\n";
}
void rezolva(){
long long n, a;
f >> n;
for(; n; n--){
f >> a;
descomp(a);
}
}
int main(){
gen();
rezolva();
return 0;
}