Pagini recente » Cod sursa (job #179517) | Rezultatele filtrării | Cod sursa (job #2582710) | Cod sursa (job #2498608) | Cod sursa (job #1111811)
#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, prod;
long long 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;
}
}
int log_pow(int baza, int exp)
{
int res=1;
while (exp)
{
if (exp%2) res*=baza, res%=mod;
baza*=baza; baza%=mod; exp/=2;
}
return res;
}
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]<=lim && X>1; ++i)
if (X%prim[i]==0)
{
int k=0;
while (X%prim[i]==0) ++k, X/=prim[i];
prod*=(k+1);
int x1=log_pow(prim[i], k+1)-1, x2=log_pow(prim[i]-1, mod-2);
sum*=x1*x2; sum%=mod;
}
if (X>1) prod*=2, sum=(sum*(X+1))%mod;
g<<prod<<' '<<sum<<'\n';
}
return 0;
}