Pagini recente » Cod sursa (job #2780555) | Cod sursa (job #438473) | Cod sursa (job #1392923) | Cod sursa (job #1802015) | Cod sursa (job #634430)
Cod sursa(job #634430)
#include<fstream>
#include<bitset>
#include<vector>
const long long Nmax = 1000008;
const int MOD = 9973;
using namespace std;
bitset<Nmax+1> ciur;
vector<int> prime;
int t;
long long n;
int nr=1;
int 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);
j = (long long) i*i ;
while(j<= Nmax)
{
j += (i+i);
if(!ciur[j])
ciur[j]=1;
}
}
}
void Sol()
{
int i,j;
nr = 1;
int suma = 1;
long long aux = n;
for( i = 0; ( long long)prime[i]*prime[i] <= aux; ++i)
{
if( n == prime[i] && nr == 1 && suma == 1)
{
fout<<2<<" "<<(1+n)%MOD<<"\n";
return;
}
if( n % prime[i] == 0)
{
int exp;
int n2 = n;
for (exp=1; n%prime[i]==0; n/=prime[i])
{
++exp;
}
nr = nr * exp;
suma = suma * ((n2/n * prime[i]) - 1 ) / ( prime[i] - 1) % MOD;
}
}
if( n > 1)
{
nr*=2;
suma=suma*(n+1) % MOD;
}
fout<<nr<<" "<<suma<<"\n";
}
int main()
{
Ciur();
int i;
fin>>t;
for( i=0;i<t;++i)
{
fin>>n;
Sol();
}
fout.close();
fin.close();
return 0;
}