Pagini recente » Cod sursa (job #1802391) | Cod sursa (job #841132) | Cod sursa (job #3253750) | Cod sursa (job #2003794) | Cod sursa (job #931872)
Cod sursa(job #931872)
#include<fstream>
#define In "ssnd.in"
#define Out "ssnd.out"
#define N 1000000LL
#define mod 9973
using namespace std;
bool p[N+10];
int prim[78500],nrp=0;
void Ciur()
{
prim[++nrp]=2;
long long i,j;
for(i=3LL;i<=N;i+=2LL)
if(p[i]==false)
{
prim[++nrp] = i;
for(j=i*i;j<=N;j+=2LL*i)
p[j] = true;
}
}
long long Pow_log(int n,int k)
{
long long p = 1;
while(k)
{
if(k&1)//k este impar
{
k--;
p = ( p * n % mod) % mod;
}
k>>=1;
n = (n %mod *n %mod)%mod;
}
return p;
}
int main()
{
long long T,n,fact,putere,pas,inv;
long long sum,nrdiv,x;
ifstream fin(In);
ofstream fout(Out);
Ciur();
fin>>T;
while(T--)
{
fin>>n;
pas = 1;
sum = 1;
nrdiv = 1;
while(pas<=nrp && prim[pas]*prim[pas]<=n)
{
fact = prim[pas]%mod;
if(n%fact==0)
{
putere = 0;
while(n%fact==0)
{
putere++;
n/=fact;
}
putere++;
x = Pow_log(fact,putere)-1;
inv = Pow_log(fact-1,mod-2);
x = (x*inv) % mod;
sum = (sum*x)%mod;
nrdiv =(nrdiv % mod * putere % mod)%mod;
}
pas++;
}
if(n>1)
{
nrdiv*=2;
nrdiv%=mod;
sum = (sum%mod *(n+1)%mod)%mod;
}
fout<<nrdiv<<" "<<sum<<"\n";
}
return 0;
}