Pagini recente » Cod sursa (job #870136) | Cod sursa (job #1664944) | Cod sursa (job #1603074) | Cod sursa (job #2952514) | Cod sursa (job #1749379)
#include <fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int rb=1000005;
int ciur[rb];
int forta(int n,int p)
{
int a=n,sol=1;
for(int i=0;(1<<i)<=p;++i)
{
if((1<<i)&p)
sol*=a;
a*=a;
}
return sol;
}
void nrd(unsigned long long a,int nec)
{
int i=0,p,nd=1,s=1,sus;
while(i<nec && a>1){
p=0;
while((a%ciur[i])==0){
a/=ciur[i];
p++;
}
if(p)
{
sus=forta(ciur[i],p+1)-1;
s*=(sus/(ciur[i]-1));
}
nd*=(p+1);
i++;
}
if(a>1)
nd*=2;
out<<nd<<" "<<s%9973<<"\n";
}
int main()
{
int n,loc=0;
unsigned long long x;
for(int i=2;i<=rb;i++)
if(ciur[i]==0)
for(int j=2;j*i<=rb;j++)
ciur[j*i]=1;
for(int i=2;i<=rb;i++)
if(ciur[i]==0)
ciur[loc++]=i;
in>>n;
for(int i=1;i<=n;i++)
{
in>>x;
nrd(x,loc);
}
}