Pagini recente » Cod sursa (job #1791104) | Cod sursa (job #297872) | Cod sursa (job #1771859) | Cod sursa (job #973128) | Cod sursa (job #1326746)
#include <fstream>
#include <algorithm>
#include <bitset>
#include <cmath>
#include <ctime>
#define mod 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int t, prim[80000], nr, lim;
long long prod,sum, X;
bitset < 1000005 > viz;
void ciur()
{
prim[++nr]=2;
for (int i=3; i<=1000000; i+=2)
if (!viz[i])
{
prim[++nr]=i;
if(i<=1000)
for (int j=i*i; j<=1000000; j+=i)
viz[j]=1;
}
}
long long log_pow(long long baza, long long exp)
{
long long res=1;
while (exp>0)
{
if (exp%2) res=(res*baza) % mod;
baza=(baza*baza) % mod; exp/=2;
}
return res % mod;
}
int main()
{
f>>t; ciur();
for (int ii=1; ii<=t; ++ii)
{
f>>X; lim=sqrt(X)+1; prod=sum=1;
for (int i=1; i<=nr && prim[i]*prim[i]<=X && X>1; ++i)
if (X%prim[i]==0)
{
int d=0;
while (X%prim[i]==0) ++d, X/=prim[i];
prod*=(d+1);
int x1=(log_pow(prim[i], d+1)-1) % mod,
x2=log_pow(prim[i]-1, mod-2);
sum=(sum*x1*x2) % mod;
}
if (X>1) prod*=2, sum=(sum*(X+1))%mod;
g<<prod<<' '<<sum<<'\n';
}
return 0;
}