Cod sursa(job #2461012)

Utilizator davidcotigacotiga david davidcotiga Data 24 septembrie 2019 20:08:15
Problema Suma si numarul divizorilor Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <cmath>

using namespace std;


ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
//generam ciurul



//aflam nr de divizori si suma acestora
/*
void divizori(unsigned long long n, int& rez, int& suma) {
	int p;
	for (int d = 0; prime[d] != 0 && n > 1; ++d) {
		p = 0;
		while (n % prime[d] == 0) {
			++p;
			n /= prime[d];
		}
		if (p) {
			rez *= p + 1;
			suma *= (pow(prime[d], p + 1) - 1) / (prime[d] - 1);
			suma %= 9973;
		}
	}
	//if (rez == 2)
		//++suma;
}
*/


void divizori(unsigned long long n, int& rez, int& suma) {
	for (int d = 1; d * d <= n; ++d)
		if (n % d == 0) {
			rez += 2;
			suma += d;
			suma += n / d;
		}
}

int main() {
	int t;
	unsigned long long n;
	cin >> t;
	for (int i = 0; i < t; ++i) {
		cin >> n;
		int suma = 0;
		int rez = 0;
		divizori(n, rez, suma);
		cout << rez << " " << suma % 9973 << "\n";
	}

	return 0;
}