Untitled

 avatar
unknown
plain_text
2 years ago
1.6 kB
2
Indexable
#include <iostream>
using namespace std;

int arr[20];
int N;

int cnt = 0;

bool checkZero()
{
	// voi arr[t] = -1 la cong , -2 la tru , -3 la nhan
	// thuc hien theo dung tinh tu nhan chia truoc cong tru sau
	// thuc hien nhan trc
	int ar[20] = { 0 };
	for (int i = 1; i < 2 * N; i++)
	{
		ar[i] = arr[i];
	}
	for (int i = 2; i < 2 * N; i = i + 2)
	{
		if (ar[i] == -3)
		{
			int so = ar[i -1];
			int t = i;
			while (ar[t] == -3)
			{
				so = so * 10 + ar[t +1];
				t += 2;
			}
			ar[i - 1] = so;
			for (int k = i; k <= t - 1 ; k++)
			{
				ar[k] = 0;
			}
			i = t;
		}
	}
	// thuc hien cong tru
	int sum = ar[1];
	for (int i = 2; i < 2 * N; i = i + 2)
	{
		int t = i - 1;
		if (ar[i] == -1)
		{
			sum = sum + ar[i + 1];
		}
		else if (ar[i] == -2)
		{
			sum = sum - ar[i + 1];
		}
	}
	if (sum == 0)
		return true;
	else
		return false;
}


void findZero(int k)
{
	if (k == 2 * N)
	{
		if (checkZero() == true)
		{
			cnt++;
		}
		return;
	}

	for (int i = 0; i < 3; i++)
	{
		if (i == 0)
		{
			arr[k] = -3;
			findZero(k + 2);
		}
		else if (i == 1)
		{
			arr[k] = -2;
			findZero(k + 2);
		}
		else
		{
			arr[k] = -1;
			findZero(k + 2);
		}
	}
}

int main()
{
	int testcase;
	cin >> testcase;
	for (int tc = 1; tc <= testcase; tc++)
	{
		cin >> N;
		for (int i = 0; i < 20; i++)
		{
			arr[i] = 0;
		}
		int t = 1;
		for (int i = 1; i <= N; i++)
		{
			arr[t] = i;
			t += 2;
		}
		cnt = 0;
		findZero(2);
		cout << "#" << tc << " " << cnt << endl;
	}
}
Editor is loading...