Pagini recente » Cod sursa (job #1993603) | Cod sursa (job #643519) | Cod sursa (job #86120) | Cod sursa (job #1114460) | Cod sursa (job #634400)
Cod sursa(job #634400)
#include<fstream>
#include<bitset>
#include<vector>
const long long Nmax = 10000006;
const int MOD = 9973;
using namespace std;
bitset<Nmax> ciur;
vector<long long> prime;
vector<long long> a;
long long n;
long long nr=1;
long long suma=1;
long long max1=-1;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
void Ciur ()
{
long long i = 0 ,j = 0;
prime.push_back(2);
max1= min( max1, Nmax);
for(i=3; i<=max1; i+=2)
if(!ciur[i])
{
prime.push_back(i);
for(j = i*i; j<= max1; 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 t;
void ReadData()
{
fin>>t;
int i;
for( i=0;i<t;i++)
{
fin>>n;
a.push_back(n);
if( max1 < n)
max1 = n;
}
max1 = max1 / 2;
}
int main()
{
//Ciur();
ReadData();
int i;
Ciur();
for( i= 0;i<t;i++)
{
n= a[i];
Sol();
}
fout.close();
fin.close();
return 0;
}