範例程式碼 uva10161

//uva10161
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	int n = 1, i, idx, output_x, output_y, temp;
	vector<int> num;
	vector<int> mid;

	num.push_back(0);
	mid.push_back(0);
	temp = 1;
	for (i = 1; i * i <= 2e9; ++i) {
		num.push_back(i * i);
		mid.push_back(temp);
		temp += 2 * i;
	}
	num.push_back(i * i);
	mid.push_back(temp);

	cin >> n;
	while (n != 0) {
		vector<int>::iterator it = lower_bound(num.begin(), num.end(), n);

		idx = it - num.begin();
		output_x = output_y = idx;
		temp = n - mid[idx];
		if (temp > 0) {
			if (idx % 2 != 0)
				output_x -= temp;
			else
				output_y -= temp;
		}
		else if (temp < 0) {
			if (idx % 2 != 0)
				output_y += temp;
			else
				output_x += temp;
		}

		cout << output_x << " " << output_y << endl;
		cin >> n;
	}


	return 0;
}