Pagini recente » Cod sursa (job #25301) | Cod sursa (job #2793901) | Cod sursa (job #1956608) | Cod sursa (job #1500993) | Cod sursa (job #2373822)
#include <iostream>
#include <fstream>
#include <vector>
#define m 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long ciur[1000010];
vector <long long> v;
long long putere(long long n, long long k)
{
long long x;
if(k==1)
return n;
else
{
if(k%2==0)
{
x=putere(n,k/2)%m;
return (x*x)%m;
}
else
{
x=putere(n,(k-1)/2)%m;
return (x*x*n)%m;
}
}
}
int main()
{
long long T,n,k,nr,nrdiv=1,sumdiv=1,p,i,j,nrpr;
fin>>T;
v.push_back(0);
ciur[1]=1;
for(i=2; i<=1000000; i++)
{
if(ciur[i]==0)
{
v.push_back(i);
for(j=2*i; j<=1000000; j=j+i)
ciur[j]=1;
}
}
nrpr=v.size()-1;
while(T!=0)
{
T--;
fin>>n;
k=0;
nrdiv=1;
sumdiv=1;
while(n!=1&&v[k]*v[k]<=n&&k<=nrpr)
{
k++;
nr=0;
while(n%v[k]==0)
{
n=n/v[k];
nr++;
}
if(nr!=0)
{
nrdiv=nrdiv*(nr+1);
p=(putere(v[k]%m,nr+1)%m+m-1)%m;
sumdiv=(sumdiv*(p%m))%m;
sumdiv=(sumdiv*(putere(v[k]-1,m-2)%m))%m;
}
}
if(n!=1)
{
nr=1;
nrdiv=nrdiv*(nr+1);
p=(putere(n%m,nr+1)%m+m-1)%m;
sumdiv=(sumdiv*(p%m))%m;
sumdiv=(sumdiv*(putere(n-1,m-2)%m))%m;
}
fout<<nrdiv<<" "<<sumdiv<<'\n';
}
}