Pagini recente » Cod sursa (job #1653055) | Cod sursa (job #922211) | Cod sursa (job #2206079) | Cod sursa (job #1250961) | Cod sursa (job #1730393)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
#define maxciur 1000000
#define mod 9973
vector<int> prime;
int t;
long long n;
void ciur (){
vector<int> sieve(maxciur, 1);
for (int i = 2; i <= maxciur; i++)
{
if (sieve[i])
{
prime.push_back(i);
for (int j = i; j <= maxciur; j = j+i)
{
sieve[j] = 0;
}
}
}
}
pair<int,int> sumadiv(long long n)
{
int card = 1;
int sumdiv = 1;
//cout<<n << " ";
for (int i = 0; 1LL * prime[i] * prime[i] <= n && i < prime.size(); ++i)
{
if (n % prime[i] != 0)
continue;
int power = 0;
//int copyn = n;
long long aux = 1;
while (n % prime[i] == 0)
{
aux *= prime[i];//%mod;
++power;
n = n/prime[i];
}
card = (card*(power+1)) % mod;
aux = (aux*prime[i]) % mod;
aux -= 1LL;
aux /= (prime[i]-1LL);
aux = aux%mod;
sumdiv *= aux;
//sumdiv %= mod;
}
if (n != 1)
{
card *= 2;
sumdiv = (sumdiv * (n+1))%mod;
}
//cout<<n<<endl;
return make_pair(card, sumdiv);
}
int main()
{
ciur();
fin >>t;
while (t != 0)
{
fin>>n;
//cout<<t<<endl;
pair<int,int> newp = sumadiv(n);
fout<<newp.first<<" "<<newp.second<<"\n";
--t;
}
}