Cod sursa(job #980124)

Utilizator GagosGagos Radu Vasile Gagos Data 4 august 2013 00:18:58
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <cstdio>
#include <cmath>

#define ll long long
#define LEN 1000007
#define RLN 500007
#define MOD 9973

int primes[RLN];
int pl;

void precompute_primes() {
	int sieve[LEN];

	for (int i = 0; i < LEN; ++i) {
		sieve[i] = 0;
	}

	for (int i = 2; i < LEN; ++i) {
		if (sieve[i] != 0) {
			continue;
		}

		primes[pl++] = i;

		for (int j = i << 1; j < LEN; j += i) {
			sieve[j] = 1;
		}
	}
}

int main() {
	int t;
	int rn;
	int count;
	int sum;
	ll n;

	precompute_primes();
	freopen("ssnd.in", "r", stdin);
	freopen("ssnd.out", "w", stdout);
	scanf("%d",&t);

	while (t--) {
		scanf("%lld", &n);

		rn = sqrt(n);
		count = 2;
		sum = (1 + n) % MOD;

		for (int i = 0; primes[i] <= rn; ++i) {
			if (n % ((ll) primes[i])) {
				count += 2;
				sum = (sum + (primes[i] + (n / ((ll) primes[i]))) % MOD ) % MOD;
			}
		}

		printf("%d %d\n", count, sum);
	}

	return 0;
}