Pagini recente » Cod sursa (job #1688872) | Cod sursa (job #81518) | Cod sursa (job #1410797) | Cod sursa (job #425109) | Cod sursa (job #2530402)
#include <fstream>
#define mod 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int t,i,j;
int v[1000005],prime[500005],nrp;
long long x,nr,s,divizor;
long long ridicarelog (int n, int p)
{
int ans = 1;
while (p)
{
if (p % 2 == 1)
ans = (ans * n );
n = (n * n);
p /= 2;
}
return ans;
}
void nrdiv_sumadiv(long long x)
{
long long d;
nr=1;
s=1;
int k;
for (d=1;prime[d]*prime[d]<=x;d++)
{
k=0;
while (x%prime[d]==0)
{
x=x/prime[d];
k++;
}
if (k)
{
nr=nr*(k+1);
divizor = ridicarelog(prime[d], k+1);
s=(s*((divizor-1)/(prime[d]-1))) % mod;
}
}
if (x>1)
{
nr=nr*2;
s=(s*(x+1)) % mod;
}
}
int main()
{
f>>t;
for (i=2;i<=1000000;i++)
if (v[i]==0)
{
nrp++;
prime[nrp]=i;
for (j=2*i;j<=1000000;j=j+i)
v[j]=1;
}
for (i=1;i<=t;i++)
{
f>>x;
nrdiv_sumadiv(x);
g<<nr<<" "<<s<<"\n";
}
return 0;
}