Untitled
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...