Pagini recente » Borderou de evaluare (job #3042783) | Cod sursa (job #786113) | Cod sursa (job #2763719) | Cod sursa (job #1813657) | Cod sursa (job #759582)
Cod sursa(job #759582)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define LIM 1000001
#define NRP 78499
#define MOD 9973
int pr[NRP],nr;
long long x;
void ciur(){
bool p[LIM];
int i=2;
memset(p,0,sizeof(p));
while(i<=1000)
{
while(p[i])i++;
for(int j=i*i;j<LIM;j+=i)p[j]=1;
i++;
}
for(int i=2;i<LIM;i++)
if(p[i]==0)pr[++nr]=i;
}
void desc()//long long x)
{
int d = 1,nr = 1,i = 1;
long long sum = 1,p;
// printf("%lld\n",(long long)(long long)x/(long long)2);
while(i<NRP && x>1)
{
// printf("%lld\n",x);
if(x%pr[i]==0)
{
d = 0; p = 1;
while(x%pr[i]==0){ //printf("%lld\n",x);
d++; p*=pr[i]; x/=pr[i]; }
// printf("%lld\n",x);
nr *= (d+1); //printf("%d\n",nr);
sum = (sum * ((p*pr[i]-1)/(pr[i]-1))) % MOD;
}
i++;
}
if(x>1)
{
nr *= 2;
sum = (sum * ((x*x-1)/(x-1))) % MOD;
}
printf("%d %lld\n",nr,sum);
}
int main()
{
int t;
//long long x;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
ciur();
scanf("%d",&t);
while(t--)
{
scanf("%lld",&x);
desc();//x);
}
// printf("%d\n",nr);
return 0;
}