fork download
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. int n, m;
  5. scanf("%d %d", &n, &m);
  6.  
  7. int arr[n + 1], g;
  8. arr[0] = 0;
  9. for (int i = 1; i <= n; i++) {
  10. scanf("%d", &g);
  11. arr[i] = arr[i - 1] + g;
  12. }
  13.  
  14. int count = 0;
  15. int subset_count = (1 << n); // 부분수열의 개수 (2의 n승)
  16. for (int subset = 1; subset < subset_count; subset++) {
  17. int sum = 0;
  18. for (int i = 0; i < n; i++) {
  19. // 부분수열에 해당하는 경우에만 합을 계산
  20. if (subset & (1 << i)) {
  21. sum += arr[i + 1] - arr[i];
  22. }
  23. }
  24. if (sum == m) {
  25. count++;
  26. }
  27. }
  28.  
  29. printf("%d", count);
  30. return 0;
  31. }
  32.  
Success #stdin #stdout 0.01s 5308KB
stdin
4 3
1 1 1 1
stdout
4