Pagini recente » Cod sursa (job #90072) | Cod sursa (job #1720177) | Cod sursa (job #2657648) | Cod sursa (job #2688042) | Cod sursa (job #1872394)
#include <stdio.h>
using namespace std;
bool ciur[1000001];
int i,n,cnt,nr,sum;
long long b,a;
bool ok;
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&n);
for(i=3; i*i<=1000000; i+=2)
{
if(ciur[i]==0)
{
cnt = 0;
while(i*i+cnt*i<=1000000)
{
ciur[i*i+cnt*i]=1;
cnt++;
}
}
}
while(n)
{
cnt=0;
scanf("%lld",&a);
nr=b=1;
sum=1;
while(a%2==0)
{
a/=2;
cnt++;
b*=2;
}
b*=2;
b--;
sum=sum*(b%9973);
nr*=(cnt+1);
if(a!=1)
{
for(i=3; i*i<=a; i+=2)
{
ok=false;
cnt=0;
b=1;
while(ciur[i]==0 && a%i==0)
{
a/=i;
b=b*i;
cnt++;
ok=true;
}
if(ok){
b*=i;
b--;
b=b/(i-1);
sum=sum*(b%9973);
nr*=(cnt+1);
}
}
if(a!=1)
{
nr*=2;
sum=sum*((a*a-1)/(a-1))%9973;
}
}
printf("%d %d\n",nr,sum);
n--;
}
return 0;
}