Cod sursa(job #1709774)

Utilizator ALL10iUPB ALL10i ALL10i Data 28 mai 2016 13:49:58
Problema Consecutive Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.91 kb
#include <fstream>
#include <iostream>
#include <math.h>
#include <vector>
#include <utility>

using namespace std;

int main()
{
	int T;
	ifstream f("consecutive.in");
	ofstream g("consecutive.out");

	f >> T;

	for(; T > 0; --T) {
		long long N, sol_size;
		vector<pair<long long, long long> > sol;
		f >> N;
		if ((N == 1) || (N == 2)) {
			g << "0\n";
			continue;
		}
		long long root = sqrt(N * 9 /  4) + 1;
		for (long long i = 2; i < root; ++i) {
			if ((i & 1) == 0) {
				long long mij = i / 2;
				if ((N - mij) % i == 0) {
					long long a = (N - mij) / i - mij + 1;
					sol.push_back(make_pair(a, a + i - 1));
				}
			} else if (N % i == 0){
				long long mij = i / 2;
				long long a = N/ i - mij;
				sol.push_back(make_pair(a, a + i - 1));
			}
		}
		sol_size = sol.size();
		g << sol_size << '\n';
		for (long long i = 0; i < sol_size; ++i)
			g << sol[i].first << ' ' << sol[i].second << '\n';
	}

	return 0;
}