Pagini recente » Cod sursa (job #876778) | Cod sursa (job #964542) | Cod sursa (job #1273981) | Cod sursa (job #1077796) | Cod sursa (job #1872708)
#include <stdio.h>
#include <fstream>
#include <bitset>
using namespace std;
ofstream fout("ssnd.out");
bitset<1000001> ciur;
int i,n,cnt,nr;
long long b,a,sum;
bool ok;
int main()
{
freopen("ssnd.in","r",stdin);
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;
while(a%2==0)
{
a/=2;
cnt++;
b*=2;
}
b*=2;
b--;
sum=b;
nr*=(cnt+1);
for(i=3; i*i<=a; i+=2)
{
ok=false;
cnt=0;
b=1;
if(ciur[i]==0)
{
while(a%i==0)
{
a/=i;
b=b*i;
cnt++;
ok=true;
}
if(ok)
{
b*=i;
b--;
b=b/(i-1);
sum=sum*b;
nr*=(cnt+1);
}
}
}
if(a!=1)
{
nr*=2;
sum=sum*((a*a-1)/(a-1));
}
fout<<nr<<" "<<sum%9973<<"\n";
n--;
}
return 0;
}