Pagini recente » Cod sursa (job #2617330) | Cod sursa (job #3131587) | Cod sursa (job #1050695) | Cod sursa (job #3198229) | Cod sursa (job #1349769)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
#include <bitset>
#define dmax 1000001
#define m 9973
#define ull unsigned long long int
int v[dmax],i,j;
//bitset<1000000000000>a;
ull d[dmax];
ull rezolvadivx(ull x,ull put)
{
ull rez=1,bas=x;
while(put)
{
if(put&1)
rez = ((rez%m)*(bas%m))%m;
bas = ((bas%m)*(bas%m))%m;
put>>=1;
}
rez--;
rez = rez/(x-1);
return rez;
}
int main()
{
ull n,t,k;
in>>t;
for(i=2;i<dmax;i++)
v[i]=1;
for(i=2;i*i<dmax;i++)
if(v[i])
for(j=i*i;j<dmax;j+=2*i)
v[j]=0;
for(k=0;k<t;k++)
{
in>>n;
for(i=2;i<dmax;i++)
d[i]=0;
ull prod=1,re=n;
for(i=2;i<=n;i++)
{
//cout<<i<<" "<<v[i]<<endl;
if(v[i]==1 &&n%i==0)
while(n%i==0)
{
d[i]++;
n/=i;
}
}
if (d[re])
out<<"2 "<<(re+1)%m<<"\n";
else
{
ull s=1;
for(i=2;i*i<=re;i++)
if (v[i]==1)
prod = ((prod%m)*((d[i]+1)%m))%m;
out<<prod<<" ";
for(i=2;i*i<=re;i++)
if (v[i]&& re%i==0)
s = ((s%m)*(rezolvadivx(i,d[i]+1)%m))%m;
out<<s%m<<"\n";
}
}
return 0;
}