Pagini recente » Cod sursa (job #2102657) | Cod sursa (job #2370981) | Cod sursa (job #71151) | Cod sursa (job #1288852) | Cod sursa (job #1108406)
#include <iostream>
#include <fstream>
#define mod 9973
#define maxn 1000010
#include <cstring>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
bool c[maxn];
int prime[maxn];
int ct;
void ciur()
{
int i,j;
c[0]=1;
c[1]=1;
for(i=3;i*i<maxn;i+=2)
if(c[i]==0)
for(j=i*i;j<maxn;j=j+2*i)
c[j]=1;
prime[++ct]=2;
for(i=3;i<maxn;i+=2)
if(c[i]==0)
prime[++ct]=i;
}
int lgpow(int b,int p)
{
if(p==0)
return 1;
if(p==1)
return b%mod;
if(p%2==0)
return (lgpow(b*b%mod,p/2))%mod;
else
return (b*lgpow(b*b%mod,(p-1)/2))%mod;
}
void solve(long long x)
{
long long i;
long long d;
long long nr=1,sum=1;
for(i=1;i<=ct&&1LL*prime[i]*prime[i]<=x;i++)
{
if(x%prime[i]==0)
{
d=0;
while(x%prime[i]==0)
{
x=x/prime[i];
d++;
}
nr=nr*(d+1);
sum=(((sum*(lgpow(prime[i],d+1)-1)%mod)%mod)*(lgpow(prime[i]-1,mod-2)%mod)%mod);
}
}
if(x>1)
{
nr*=2;
sum=(1LL*sum*(x+1))%mod;
}
out<<nr<<" "<<sum%mod<<"\n";
}
int main()
{
int t;
long long n;
in>>t;
ciur();
while(t--)
{
in>>n;
solve(n);
}
return 0;
}