Pagini recente » Cod sursa (job #3132842) | Cod sursa (job #2934742) | Cod sursa (job #2213912) | Cod sursa (job #1239030) | Cod sursa (job #2982756)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
const int MOD=9973;
bool ciur[1000001];
int prime[1000001],nrPrime=0;
long long lgPow(int x, int n)
{
long long val=1,a=x;
while(n>0)
if(n%2==0)
{
a=(a*a)%MOD;
n/=2;
}
else
{
val=(val*a)%MOD;
n--;
}
return val;
}
int main()
{
int i,j,nrTeste,n,nrDiv,sDiv;
ciur[1]=1;
for(i=2; i<=1000; i++)
if(ciur[i]==0)
{
nrPrime++;
prime[nrPrime]=i;
for(j=i*2; j<=1000000; j+=i)
ciur[j]=1;
}
for(i=1001;i<=1000000;i++)
if(ciur[i]==0)
{
nrPrime++;
prime[nrPrime]=i;
}
f>>nrTeste;
for(i=1; i<=nrTeste; i++)
{
f>>n;
nrDiv=1;
sDiv=1;
for(j=1; j<=nrPrime&&1LL*prime[j]*prime[j]<=n; j++)
if(n%prime[j]==0)
{
if(i==6)
cout<<prime[j]<<' '<<n<<'\n';
int exponent=0;
while(n%prime[j]==0)
{
exponent++;
n/=prime[j];
}
nrDiv=nrDiv*(exponent+1);
sDiv=(sDiv*((lgPow(prime[j],exponent+1)%MOD-1)%MOD))%MOD;
sDiv=(sDiv*((lgPow(prime[j]-1,MOD-2))%MOD))%MOD;
}
if(n>1)
{
nrDiv*=2;
sDiv=(1LL*sDiv*(n+1)%MOD);
}
g<<nrDiv<<' '<<sDiv<<'\n';
}
}