Pagini recente » Cod sursa (job #705248) | Cod sursa (job #3264741) | Cod sursa (job #775472) | Cod sursa (job #177896) | Cod sursa (job #1957337)
#include <stdio.h>
#include <math.h>
#include <bitset>
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];
bitset<MAX> b;
ll nr;
void ciur(){
ll d,i;
b[1]=1;
for (d=2;d*d<=MAX-10;d++)
if (!b[d])
for (i=d*d;i<=MAX-10;i+=d) b[i]=1;
nr=0;
for (i=1;i<=MAX-10;i++)
if (!b[i]) v[++nr]=i;
}
inline ll inv(ll n, ll p){
p%=MOD;
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();
//for (i=1;i<=nr;i++) printf("%d ",v[i]);
//printf("%d",nr);
fscanf(f,"%lld",&t);
while (t){
t--;
fscanf(f,"%lld",&n);
nrd=1;psus=1;pjos=1;
ll m=n;
i=1;
while (n>1&&v[i]*v[i]<=m)
{
d=0;z=1;
while (n%v[i]==0){
n/=v[i];z*=v[i];
d++;
}
if (d) {pjos=pjos*inv(MOD-2,v[i]-1)%MOD;z*=v[i];psus=psus*(z-1)%MOD;}
nrd*=(d+1);
i++;
}
if (n>1) {psus=psus*(n+1)%MOD;nrd*=2;}
psus=psus*pjos%MOD;
fprintf(g,"%lld %lld\n",nrd,psus);
}
fclose(f);
fclose(g);
return 0;
}