Pagini recente » Cod sursa (job #166156) | Cod sursa (job #2832228) | Cod sursa (job #2957232) | Cod sursa (job #1861019) | Cod sursa (job #863713)
Cod sursa(job #863713)
#include <iostream>
#include <bitset>
#include <fstream>
using namespace std;
#define Nmax 1000001
#define modulo 9973
bitset <Nmax> ciur;
short int div[80000];
int 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 int putere(int a, int b){
int raspuns = 1;
while(b){
if(b & 1)
raspuns = (a * raspuns) % modulo;
b >>= 1;
a = (a * a) % modulo;
}
return raspuns;
}
void descomp(int a){
int nr = 1, ns = 1;
for(int i = 1; i <= l && div[i] * div[i] <= a; ++i){
if(a % div[i])
continue;
int contor = 0;
while(a % div[i] == 0)
a /= div[i],
contor++;
nr *= (contor + 1);
ns = (ns * ((putere(div[i], contor + 1) - 1) % modulo) / (div[i] - 1)) % modulo;
}
if(a > 1)
nr *= 2,
ns = (ns * (a + 1) % modulo);
g << nr << " " << ns << '\n';
}
void rezolva(){
int n, a;
for(f >> n; n; n--){
f >> a;
descomp(a);
}
}
int main(){
gen();
rezolva();
return 0;
}