Pagini recente » Cod sursa (job #1633006) | Cod sursa (job #353334) | Cod sursa (job #3278943) | Cod sursa (job #1444014) | Cod sursa (job #1477070)
#include<fstream>
#include<stdio.h>
#include<string.h>
#include<bitset>
using namespace std;
#define MOD 9973
#define MAX 100001
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
bitset<MAX> viz;
int nrPrime[100001];
int cntNrPrime = 1;
void ciur()
{
nrPrime[cntNrPrime++] = 1;
for(int i=2;i<MAX;i++)
{
int j=i;
if(viz[j] == 0)
{
nrPrime[cntNrPrime++] = j;
for(j = i+i ;j<=MAX;j+=i)
viz[j] = 1;
}
}
}
inline int pow(int x, int p) {
// INFOARENA
int rez = 1;
x %= MOD;
for(; p; p >>= 1) {
if(p & 1) {
rez *= x;
rez %= MOD;
}
x *= x;
x %= MOD;
}
return rez;
}
int main()
{
// freopen("ssnd.in", "r", stdin);
// freopen("ssnd.out", "w", stdout);
int t;
long long n;
//scanf("%d", &t);
fin>>t;
ciur();
for(int i=1;i<=t;i++)
{
int cnt =1;
//scanf("%lld", &n);
fin>>n;
long long N = n;
long long sum = 1;
long long q = 1;
for(int ii=2;(1LL * nrPrime[ii] * nrPrime[ii]<=N) && (ii<cntNrPrime);ii++)
{
if(N%nrPrime[ii] !=0)
continue;
int d = 0;
q = nrPrime[i];
while(N%nrPrime[ii] == 0)
{
N/=nrPrime[ii];
d++;
q*=nrPrime[ii];
}
cnt *= (d+1);
// infoarena
sum = (sum*(q-1))/(nrPrime[ii]-1)%MOD;
// infoarena
}
if(N>1)
{
// dp infoarena
cnt *=2; // nu inteleg de ce
sum = (1LL*sum*(N + 1)) % MOD; // nu inteleg de ces
// infoarena
}
// printf("%d %lld\n",cnt, sum);
fout<< cnt << " " << sum <<"\n";
}
}