Pagini recente » Cod sursa (job #2088401) | Cod sursa (job #334803) | Cod sursa (job #1602687) | Cod sursa (job #1130369) | Cod sursa (job #481083)
Cod sursa(job #481083)
#include <cstdio>
#include <cstdlib>
#include <stdint.h>
#include <string>
#include <math.h>
#define MODNR 9973
FILE *fin=fopen("ssnd.in","r");
FILE *fout=fopen("ssnd.out","w");
uint8_t bif[1000000];
int a[300000];
void ciur(int n)
{
memset(bif,1,n);
int nrprimes=0;
for (int i=2; i<n; i++)
{
if (!bif[i]) continue;
a[nrprimes++]=i;
for (int j=i*2; j<n; j+=i)
bif[j]=0;
}
a[nrprimes]=-1;
}
int put(int a, int b)
{
int p=1;
for (int i=(sizeof(int)*8-2); i>=0; i--)
{
p=p*p;
if (b&(1<<i))
p*=a;
}
return p;
}
int main (int argc, char * const argv[]) {
int t;
fscanf(fin, "%d", &t);
// ciur(1000001);
for (int i=0; i<t; i++)
{
long long n;
long long s=1,nr=1;
fscanf(fin, "%lld", &n);
//int np=0;
// int p=a[np];
int p=2;
while (p<=sqrt(n))
{
if (p==-1)
return -1;
long long put=p;
int f=0;
while (!(n%p))
{
f++;
n/=p;
put*=p;
//put%=MODNR;
}
nr*=f+1;
nr%=MODNR;
s=(s*((put-1)/(p-1)))%MODNR;
// np++;
// p=a[np];
p++;
}
if (n!=1)
{
s=(s*((n*n-1)/(n-1)))%MODNR;
nr=(nr<<1)%MODNR;
}
fprintf(fout, "%lld %lld\n",nr,s);
}
fclose(fin);
fclose(fout);
return 0;
}