Pagini recente » Cod sursa (job #2817816) | Cod sursa (job #2851808) | Cod sursa (job #369413) | Cod sursa (job #2430205) | Cod sursa (job #634397)
Cod sursa(job #634397)
#include<fstream>
#include<bitset>
#include<vector>
const int Nmax = 1000008;
const int MOD = 9973;
using namespace std;
bitset<Nmax> ciur;
vector<long long> prime;
long long n;
int nr=1;
long long suma=1;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
void Ciur ()
{
long long i = 0 ,j = 0;
prime.push_back(2);
for(i=3; i<=Nmax; i+=2)
if(!ciur[i])
{
prime.push_back(i);
for(j = i*i; j<= Nmax; j += (i+i))
if(!ciur[j])
ciur[j]=1;
}
}
void Sol()
{
int i,j;
nr = 1;
long long suma = 1;
for( i = 0; prime[i] <= n; ++i)
{
if( n == prime[i] && nr == 1 && suma == 1)
{
fout<<2<<" "<<(1+n)%MOD<<"\n";
return;
}
if( n % prime[i] == 0)
{
int exp;
long long prod;
for (exp=0, prod=1; n%prime[i]==0; n/=prime[i])
{
++exp;
prod = prod * prime[i];
prod = prod % MOD;
}
nr = nr * (exp+1);
suma = suma * ((prime[i] * prod) - 1 ) / ( prime[i] - 1) % MOD;
suma = suma % MOD;
}
}
fout<<nr<<" "<<suma<<"\n";
}
int main()
{
Ciur();
int t,i;
fin>>t;
for( i=0;i<t;i++)
{
fin>>n;
Sol();
}
fout.close();
fin.close();
return 0;
}