Pagini recente » Cod sursa (job #465050) | Cod sursa (job #1314078) | Cod sursa (job #2055096) | Monitorul de evaluare | Cod sursa (job #634440)
Cod sursa(job #634440)
#include<fstream>
#include<bitset>
#include<vector>
const long long Nmax = 1000005;
const int MOD = 9973;
using namespace std;
bitset<Nmax+1> ciur;
vector<int> prime;
long long n;
int t, nr=1, suma=1;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
inline 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;
}
}
inline void Sol()
{
int i,j;
nr = 1;
int suma = 1;
for( i = 0;(long long) prime[i]*prime[i] <= n; ++i)
{
if( n %prime[i] != 0);
else/*
if( n == prime[i] && nr == 1 && suma == 1)
{
fout<<2<<" "<<(1+n)%MOD<<"\n";
return;
}
else*/
{
int exp;
long long 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) % MOD;
suma = suma % MOD;
}
}
if( n > 1)
{
nr = nr + nr;
suma= suma * ((n+1) % MOD) % 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;
}