Pagini recente » Cod sursa (job #1051457) | Cod sursa (job #1569065) | Cod sursa (job #1395744) | Cod sursa (job #941546) | Cod sursa (job #1650041)
#include <iostream>
#include <cstdio>
#include <vector>
#include <bitset>
#include <cmath>
#define nmax 1000005
#define mod 9973
using namespace std;
int n,k,nrp;
long long sum;
bitset<nmax> is;
int p[nmax];
inline void kratos(int nr)
{
for(int i=nr; i<=nmax; i+=nr) is[i]=1;
}
inline void sieve()
{
kratos(2); p[++nrp]=2;
for(int i=3;i<=nmax;i+=2) { p[++nrp]=i; kratos(i); }
}
inline int power(int nr,int p)
{
int a=nr,sol=1,i;
for(i=1; i<=p; i<<=1)
{
if(i&p) sol=(1LL*sol*a)%mod;
a=(1LL*a*a)%mod;
}
return sol;
}
int main()
{
int i,j,sq,d,ok,nrdiv,p1,p2;
long long nr;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&n);
sieve();
for(i=1;i<=n;i++)
{
scanf("%lld",&nr);
nrdiv=1; sum=1;
for(j=1; j<=nrp && 1ll*p[j]*p[j]<=nr;j++)
if(nr%p[j]==0)
{
d=0;
while(nr%p[j]==0) { d++; nr/=p[j]; }
nrdiv*=(d+1);
p1=(power(p[j],d+1)-1)%mod;
p2=(power(p[j]-1,mod-2))%mod;
sum=(((sum*p1)%mod)*p2)%mod;
}
if(nr>1)
{
nrdiv*=2;
sum=(1LL*sum*(nr+1)%mod);
}
printf("%d %d\n",nrdiv,sum);
}
fclose(stdin);
fclose(stdout);
return 0;
}