Pagini recente » Cod sursa (job #784957) | Cod sursa (job #46525) | Cod sursa (job #1778597) | Cod sursa (job #2692161) | Cod sursa (job #1349792)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
#include <map>
#define dmax 1000001
#define m 9973
#define ull unsigned long long int
//bitset<1000000000000>a;
int d[dmax];
bool v[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,i,j;
in>>t;
for(i=2;i<dmax;i++)
v[i]=true;
for(i=2;i*i<dmax;i++)
if(v[i])
for(j=i*i;j<dmax;j+=i)
v[j]=false;
for(k=0;k<t;k++)
{
in>>n;
for(i=2;i<dmax;i++)
d[i]=0;
ull prod=1,re=n,s=1;
for(i=2;i<=n;i++)
{
if(v[i]==true && n%i==0)
while(n%i==0)
{
d[i]++;
n/=i;
}
}
if (d[re])
out<<"2 "<<(re+1)%m<<"\n";
else
{
for(i=2;i<=re;i++)
if ((v[i]==true) &&(d[i]>0))
prod = ((prod%m)*((d[i]+1)%m))%m;
out<<prod<<" ";
for(i=2;i<=re;i++)
if (v[i]==true && ((re%i)==0))
s = ((s%m)*(rezolvadivx(i,d[i]+1)%m))%m;
out<<s%m<<"\n";
}
}
return 0;
}