Pagini recente » Cod sursa (job #455570) | Cod sursa (job #1794611) | Cod sursa (job #1625603) | Cod sursa (job #539925) | Cod sursa (job #1644807)
#include <iostream>
#include <cstdio>
#include <vector>
#include <bitset>
#include <cmath>
#define nmax 1000005
#define mod 9973
using namespace std;
int n,k;
long long sum;
bitset<nmax> is;
int p[nmax];
inline void kratos(int n)
{
for(int i=n;i<=nmax;i+=n) is[i]=1;
}
inline void sieve()
{
p[1]=2; k=1;
kratos(2);
for(int i=3;i<=nmax;i+=2)
if(!is[i])
{
p[++k]=i;
kratos(i);
}
}
inline int power(int x,int po)
{
int i,j,sol=1,a=x;
for(i=0;(1<<i)<=po;i++)
{
if( (1<<i)&po ) sol=(1LL*sol*a)%mod;
a=(1LL*a*a)%mod;
}
return sol;
}
int main()
{
int i,j,sq,nrdiv,d,p1,p2,ok;
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<=k && 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;
}