Pagini recente » Cod sursa (job #604896) | Cod sursa (job #2560434) | Cod sursa (job #2819312) | Cod sursa (job #876407) | Cod sursa (job #598397)
Cod sursa(job #598397)
#include <fstream>
using namespace std;
long long int suma=1,nrdiv=1;
long long int pow(long long int a,long long int b)
{
long long int i,s=1;
for(i=1;i<=b;i++)
s*=a;
return s;
}
void divizor(long long int k)
{
long long int i,p=0,aux=k;
nrdiv=suma=1;
if(k%2==0)
{
while(k%2==0)
{
p++;
k/=2;
}
if(2!=aux)
{
suma*= (pow(2,p+1)-1)/(2-1);
nrdiv*=p+1;
}
}
for(i=3;i<=k;i+=2)
{
p=0;
if(k%i==0)
{
while(k%i==0)
{
p++;
k/=i;
}
if(i!=aux)
{
suma*= (pow(i,p+1)-1)/(i-1);
nrdiv*=p+1;
}
}
}
}
int main()
{
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long int t,i,k;
fin>>t;
for(i=1;i<=t;i++)
{
fin>>k;
divizor(k);
if(suma==1 && nrdiv==1)
fout<<2<<" "<<k+1<<"\n";
else
fout<<nrdiv<<" "<<suma%9973<<"\n";
}
fin.close();
fout.close();
return 0;
}