Pagini recente » Cod sursa (job #1226400) | Cod sursa (job #876242) | Cod sursa (job #541593) | Cod sursa (job #1467961) | Cod sursa (job #1789275)
#include <iostream>
#include <cstdio>
using namespace std;
FILE *f, *g;
bool p[1000001];
long long v[80001];
int k;
int n;
void ciur()
{
int n = 1000000;
int i, j;
p[0] = p[1] = 1;
for(i = 4; i <= n; i += 2)
p[i] = 1;
for(i = 3; i * i <= n; i += 2)
if(p[i] == 0)
for(j = i * i; j <= n; j += i * 2)
p[j] = 1;
v[++ k] = 2;
for(i = 3; i <= n; i += 2)
{
if(p[i] == 0)
v[++ k] = i;
}
//printf("%d\n", k);
}
int power(int a, int b)
{
int i, p = 1;
for(i = 1; i <= b; i ++)
{
p *= a;
p %= 9973;
}
return p;
}
void sumdiv(int nr)
{
long long sum, div, p, d, x;
sum = 1;
div = 1;
p = 0;
d = 1;
while(d <= k && v[d] * v[d] * 1LL <= nr)
{
p = 0;
while(nr % v[d] == 0)
{
nr /= v[d];
p ++;
}
div *= (p + 1);
x = (power(v[d], p + 1) - 1) / (v[d] - 1);
sum *= x;
sum %= 9973;
d ++;
}
if(nr > 1)
{
sum *= (nr % 9973 * nr % 9972 - 1) / (nr - 1);
sum %= 9973;
div *= 2;
}
fprintf(g, "%lld %lld\n", div, sum);
}
void readFile()
{
f = fopen("ssnd.in", "r");
g = fopen("ssnd.out", "w");
int i;
long long nr;
fscanf(f, "%d", &n);
for(i = 1; i <= n; i ++)
{
fscanf(f, "%lld", &nr);
sumdiv(nr);
}
fclose(f);
fclose(g);
}
int main()
{
ciur();
readFile();
return 0;
}