Pagini recente » Cod sursa (job #1935431) | Cod sursa (job #2597863) | Cod sursa (job #107021) | Profil dinu_ovidiu_alexandru_325CA | Cod sursa (job #1098074)
#include<stdio.h>
#include<math.h>
#define MOD 9973
int t;
char visited[10000000];
void sieve() {
int i, j;
for (i = 2; i * i <= 1000000; ++i) {
if (!visited[i]) {
for (j = i + i; j <= 1000000; j += i) {
visited[j] = 1;
}
}
}
}
long long readFromFile(FILE *fin) {
long long number;
fscanf(fin, "%lld", &number);
return number;
}
void printToFile(FILE *fout, int number, int sum) {
fprintf(fout, "%d %d\n", number, sum);
}
void process() {
FILE *fin, *fout;
long long n;
long i;
int number, sum, power, prod;
fin = fopen("ssnd.in", "r");
fout = fopen("ssnd.out", "w");
t = (int)readFromFile(fin);
do {
n = readFromFile(fin);
number = sum = 1;
for (int i = 2; i <= sqrt(n); ++i) {
if (n % i == 0 && !visited[i]) {
power = 0;
prod = i;
while (n % prod == 0) {
++power;
prod *= i;
}
number *= (1 + power);
sum *= ((long long)((pow(i, power + 1) - 1) / (i - 1)) % MOD);
}
}
if (number == 1) {
++number;
sum += ((n % MOD) % MOD);
}
printToFile(fout, number, sum);
--t;
} while (t);
fclose(fin);
fclose(fout);
}
int main() {
sieve();
process();
return 0;
}