Pagini recente » Cod sursa (job #2098291) | Cod sursa (job #2165572) | Cod sursa (job #1982958) | Cod sursa (job #80027) | Cod sursa (job #1957253)
#include <stdio.h>
using namespace std;
FILE*f=fopen("ssnd.in","r");
FILE*g=fopen("ssnd.out","w");
#define MAX 1000010
#define ll long long
#define MOD 9973
int v[MAX];
ll nr;
void ciur(){
ll d,i;
v[1]=1;
for (d=2;d<=MAX;d++)
if (!v[d])
for (i=2;i*d<=MAX;i++) v[i*d]=1;
d=0;
for (i=1;i<=MAX;i++)
if (!v[i]) v[++d]=i;
nr=d;
}
ll inv(ll n, ll p){
if (n==0) return 1;
if (n==1) return p;
ll s=inv(n/2,p);
s=s*s%MOD;
if (n%2) s=s*p%MOD;
return s;
}
int main()
{
ll t,n,nrd,i,d,z,p,psus,pjos;
ciur();
fscanf(f,"%lld",&t);
while (t){
t--;
fscanf(f,"%lld",&n);
nrd=1;psus=1;pjos=1;
for (i=1;i<=nr&&n>1;i++){
d=0;z=1;
while (n%v[i]==0){
n/=v[i];z*=v[i];
d++;
}
if (d) {pjos=pjos*(v[i]-1)%MOD;z*=v[i];psus=psus*(z-1)%MOD;}
nrd*=(d+1);
}
psus=psus*inv(MOD-2,pjos)%MOD;
fprintf(g,"%lld %lld\n",nrd,psus);
}
fclose(f);
fclose(g);
return 0;
}