Pagini recente » Cod sursa (job #209293) | Borderou de evaluare (job #365890) | Cod sursa (job #48388) | Cod sursa (job #1345416) | Cod sursa (job #414672)
Cod sursa(job #414672)
#include<fstream>
#define Max 1000000
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int x[Max];
void ciur()
{
int i,j;
for(i = 2; i <= 10000; i++)
if(x[i] == 0)
for(j = i+1; j <= 10000; j++)
if(j%i == 0)
x[j] = 1;
}
int putere(int a,int b)
{
if(b == 1)return a;
else if(b % 2 == 0)return (putere(a,b/2)%9973)*(putere(a,b/2)%9973);
else return a * (putere(a,b/2)%9973)*(putere(a,b/2)%9973);
}
void sumnrdiv(long long l)
{
int i,d,pt,dt;
d = 0;
dt = 1;
pt = 1;
long long aux = l;
for(i = 2; i <= l; i++)
{
if(x[i] == 0)
while(aux % i == 0)
{
d++;
aux /= i;
}
dt = dt*(d+1);
pt = pt*(putere(i,d+1)-1)/(i-1)%9973;
d = 0;
}
fout<<dt<<" "<<pt<<"\n";
}
int main()
{
int t,x=0,i;
fin>>t;
ciur();
for(i = 1; i<= t; i++)
{
fin>>x;
sumnrdiv(x);
}
fin.close();
fout.close();
}