Pagini recente » Cod sursa (job #874014) | Cod sursa (job #2709349) | Cod sursa (job #51057) | Cod sursa (job #2664627) | Cod sursa (job #2948208)
#include <fstream>
#include <iostream>
#include <bitset>
#include <vector>
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
const int NMAX = 1e6;
const int MOD = 9973;
bitset<1+NMAX> c;
vector<int> prime;
void precalcul(){
for(int i=2; i*i<=NMAX; i++)
if(!c[i])
for(int j=i*i; j<=NMAX; j+=i)
c[j] = 1;
for(int i=2; i<=NMAX; i++)
if(!c[i])
prime.push_back(i);
}
void ssnd(long long n){
int d = 0;
long long sum = 1;
int nrdiv = 1;
while(d < prime.size() and prime[d] * prime[d] <= n){
if(n % prime[d] == 0){
int p = 0;
long long pwr = prime[d];
while(n % prime[d] == 0){
p++;
pwr *= prime[d];
n /= prime[d];
}
nrdiv *= (p+1);
sum = sum*(pwr - 1)/(prime[d] - 1);
sum %= MOD;
}
d++;
}
if( n > 1 ){
nrdiv *= 2;
sum = sum*(n*n-1)/(n-1);
sum %= MOD;
}
g << nrdiv << ' ' << sum << "\n";
}
int main()
{
precalcul();
int t;
f>>t;
for(int i=1; i<=t; i++){
long long n;
f>>n;
ssnd(n);
}
return 0;
}