Cod sursa(job #1900654)

Utilizator andreeammAndreea Musat andreeamm Data 3 martie 2017 15:35:02
Problema Consecutive Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 0.94 kb
#include <iostream>
#include <vector>
#include <utility>
#include <cstdlib>
#include <fstream>
#include <queue>
#include <stack>
#include <cmath>

#define pb push_back
#define mp make_pair
#define Graph vector<vector<pair<int,int>>>
#define range(i, a, b) for(int i = a; i < b; i++)
#define INF 0x3f3f3f3f

using namespace std;

typedef vector<int> vi;
typedef pair<int, int> ii;
typedef vector<pair<int, int>> vii;
typedef vector<int> vi;
typedef vector<bool> vb;
typedef vector<vector<int>> vvi;
typedef stack<int> si;

int main() {
	
	int t, N, k;
	cin >> t;
	while(t--) 
	{
		int cnt = 0;
		vector<pair<int, int>> sols;

		cin >> N;

		for (k = 0; k <= floor(N / 2); k++) 
		{
			int c = -k * (k + 1) - (N << 1);
			int delta = 1 - (c << 2);

			float sol = (-1 + sqrt(delta)) / 2;
			if (sol == (int)sol) 
			{
				cnt++;
				sols.pb(mp(k + 1, sol));
			}
		}

		printf("%d\n", cnt);
		for (auto& s : sols)
			printf("%d %d\n", s.first, s.second);
	}	
}