Pagini recente » Cod sursa (job #1177837) | Cod sursa (job #2586434) | Cod sursa (job #2586470) | Cod sursa (job #2589839) | Cod sursa (job #2587114)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <utility>
#include <cstring>
#include <bitset>
#include <vector>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
#define ull unsigned long long int
#define mod 9973
#define SIZE 1000003
bitset<1000003> prime;
int pri[1000003];
int pric=0;
vector<ull> sieve(int n){
prime.flip();
for(int i = 3; i*i <=n ;i +=2)
if(prime[i]==1)
for(int j =i*i; j<=n ;j += 2*i)
prime[j]=0;
vector<ull> primes;
primes.push_back(2);
pri[pric++]=2;
for(int i =3 ;i<=n ;i+=2)
if(prime[i]==1){
primes.push_back(i);
pri[pric++]=i;
}
return primes;
}
void work(ull n, vector<ull> primes){
ull Sdiv=1;
ull Ndiv=1;
//for(vector<ull>::iterator it=primes.begin(); it != primes.end() && *it<=n; it++){
for(int j =0; j <pric && pri[j]*pri[j]<=n; j++){
ull i=pri[j];
if(n%i==0) {
ull ndiv=i;
ull nr=1;
while(n%i==0){
nr++;
n /=i;
ndiv *=i%mod;
}
Ndiv*=nr%mod;
Sdiv*=((ndiv-1)/(i-1))%mod;
}
}
if(n >1) {
Sdiv*=(n*n-1)/(n-1)%mod;
Ndiv*= 2;
}
out<<Ndiv<<" "<<Sdiv%mod<<'\n';
}
int main ( )
{
ull n,t;
in>>t;
while(t--){
in>>n;
work(n,sieve(n));
}
return 0;
}