Pagini recente » Cod sursa (job #887794) | Cod sursa (job #288195) | Cod sursa (job #293236) | Cod sursa (job #641302) | Cod sursa (job #863109)
Cod sursa(job #863109)
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <bitset>
using namespace std;
FILE *f=fopen("ssnd.in","r");
FILE *g=fopen("ssnd.out","w");
int t,k,i,j,ok;
long long v[80010],s,d,y,x,p;
bitset <1000005> pu;
bool ciur(int n)
{
int i,j;
v[0]=1;
v[1]=2;
for (i=4;i<=n;i+=2) pu[i]=1;
for (i=3;i<=n;i+=2)
if (pu[i]==0){
v[0]++;
v[v[0]]=i;
for (j=i+i;j<=n;j=j+i)
pu[j]=1;
}
}
int main()
{
fscanf(f,"%d",&t);
ciur(1000005);
for (j=1;j<=t;j++){
d=1;
s=1;
fscanf(f,"%lld",&x);
//if (pu[x]==0) fprintf(g,"2 %lld\n",x+1); else {
i=1;ok=0;
y=x;
while (v[i]*v[i]<=y)
{
k=0;p=1;ok=1;
while (x % v[i]==0)
{x=x/v[i];
p=p*v[i];
k++;
}
d=d*(k+1);
s=(s*((p*v[i]-1)/(v[i]-1)))%9973;
i++;
if (x==1 ) break;
//if (x<1000005)
// if (pu[x]==0 ) {d=d*2; s=(s*((x*x-1)/(x-1)))%9973; break;}
}
if (d==1) fprintf(g,"2 %lld\n",x+1); else
fprintf(g,"%lld %lld\n",d,s);
}
return 0;
}