範例程式碼 uva11040

//uva11040
#include <iostream>

int arr[9][9];

void getInput();
void doOutput();
void makeBaseRow();
void makeArrByBaseRow();

int main() {
	int case_n;
	std::cin >> case_n;
	while(case_n--) {
		getInput();
		makeBaseRow();
		makeArrByBaseRow();
		doOutput();
	}
	return 0;

}

void getInput() {
	using namespace std;
	cin >> arr[0][0];

	cin >> arr[2][0] >> arr[2][2];

	cin >> arr[4][0] >> arr[4][2] >> arr[4][4];

	cin >> arr[6][0] >> arr[6][2] >> arr[6][4] >> arr[6][6];

	cin >> arr[8][0] >> arr[8][2] >> arr[8][4] >> arr[8][6] >> arr[8][8];
}

void doOutput() {
	using namespace std;
	for(int i = 0; i < 9; ++i) {
		for(int j = 0; j < i; ++j) {
			cout << arr[i][j] << ' ';
		}
		cout << arr[i][i] << endl;
	}
}

void makeBaseRow() {
	// D = a + 2b + c ==> b = (D - a - c) / 2
	arr[8][1] = (arr[6][0] - arr[8][0] - arr[8][2]) / 2;
	arr[8][3] = (arr[6][2] - arr[8][2] - arr[8][4]) / 2;
	arr[8][5] = (arr[6][4] - arr[8][4] - arr[8][6]) / 2;
	arr[8][7] = (arr[6][6] - arr[8][6] - arr[8][8]) / 2;
}

void makeArrByBaseRow() {
	for(int i = 7; i >= 0; --i)
		for(int j = 0; j<= i; ++j)
			arr[i][j] = arr[i + 1][j] + arr[i + 1][j + 1];
}