Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
1.4 kB
3
Indexable
Never
Biểu thức Zero
Cho một số tự nhiên N ≤ 9. Giữa các số từ 1 đến N hãy thêm vào các dấu + và - sao cho kết quả thu được bằng 0. Hãy viết chương trình tìm tất cả các khả năng có thể.

[Input]

Dòng đầu tiên là T số testcase. T dòng tiếp theo là các số tự nhiên N <= 9.

 

[Output]

Mỗi test case in ra “# ” theo sau là số lượng kết quả tìm được mỗi test case. 



[Sample] 

[Input]

1

7

 

[Output]

#1 6

 

Giải thích

1-2-3-4-5+6+7=0

1-2+3+4-5+6-7=0

1-23-45+67=0

1-23+4+5+6+7=0

1+2-3-4+5+6-7=0

1+2-3+4-5-6+7=0

8
2
3
4
5
6
7
8
9

#include <iostream>
using namespace std;

int n;
int ans[30];
int dem;

void BackTrack(int a, int sum, int dem1){
	if(a == n){
		if(sum == 0){
			dem++;
		}
		return;
	}

	if(dem1 == n)
		return;

	int next = a+1;
	for(int i=a+2; i<=n+1; i++){
		BackTrack(i-1, sum+next, dem1+1);
		if(dem1>0)
			BackTrack(i-1, sum-next, dem1+1);
		
		next = next*10+i;
	}
}


int main(){
	//freopen("vao.txt", "r", stdin);
	int t;
	cin >> t;
	for(int tc=1; tc<=t; tc++){
		cin >> n;

		dem = 0;
		BackTrack(0, 0, 0);
		cout << "#" << tc << " ";
		cout << dem << endl;
	}
	return 0;
}
#1 0
#2 1
#3 1
#4 1
#5 1
#6 6
#7 10
#8 11