Cod sursa(job #1709237)

Utilizator vand_bot_la_PAUPB Mardale Mocanu Vasilache vand_bot_la_PA Data 28 mai 2016 11:25:13
Problema Consecutive Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.76 kb
#include <stdio.h>
#include <vector>
#include <math.h>
using namespace std;

long long t, n, res;
vector<pair<long long, long long> > sol;

int main(){
	freopen("consecutive.in", "r", stdin);
	freopen("consecutive.out", "w", stdout);
	scanf("%lld", &t);
	for(int i = 0; i < t; ++i){
		sol.clear();
		scanf("%lld", &n);

		long long p, q, a, b;
		long long limit = sqrt(2 * n + 1);
		for(p = 1; p <= limit; ++p){
			if((2 * n) % p == 0){
				q = (2 * n) / p;
				if(p % 2 != q % 2){
					a = (q - p + 1) / 2;
					b = (p + q - 1) / 2;
					if(b < n && 2 * n == (a + b) * (b - a + 1))
						sol.push_back(make_pair(a, b));
				}
			}
		}
	
		printf("%d\n", sol.size());
		for(int i = 0; i < sol.size(); ++i)
			printf("%lld %lld\n", sol[i].first, sol[i].second);
	}
	return 0;
}