Advertisement
APXOHT

Untitled

Dec 1st, 2012
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.69 KB | None | 0 0
  1. using System;
  2.  
  3. class SubsetSums
  4. {
  5.     static void Main()
  6.     {
  7.         // Read input data
  8.         long S = long.Parse(Console.ReadLine());
  9.         int N = int.Parse(Console.ReadLine());
  10.         long n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16;
  11.         n1 = n2 = n3 = n4 = n5 = n6 = n7 = n8 = n9 = n10 = n11 = n12 = n13 = n14 = n15 = n16 = 0L;
  12.         for (int i = 1; i <= N; i++)
  13.         {
  14.             if (i == 1) n1 = long.Parse(Console.ReadLine());
  15.             if (i == 2) n2 = long.Parse(Console.ReadLine());
  16.             if (i == 3) n3 = long.Parse(Console.ReadLine());
  17.             if (i == 4) n4 = long.Parse(Console.ReadLine());
  18.             if (i == 5) n5 = long.Parse(Console.ReadLine());
  19.             if (i == 6) n6 = long.Parse(Console.ReadLine());
  20.             if (i == 7) n7 = long.Parse(Console.ReadLine());
  21.             if (i == 8) n8 = long.Parse(Console.ReadLine());
  22.             if (i == 9) n9 = long.Parse(Console.ReadLine());
  23.             if (i == 10) n10 = long.Parse(Console.ReadLine());
  24.             if (i == 11) n11 = long.Parse(Console.ReadLine());
  25.             if (i == 12) n12 = long.Parse(Console.ReadLine());
  26.             if (i == 13) n13 = long.Parse(Console.ReadLine());
  27.             if (i == 14) n14 = long.Parse(Console.ReadLine());
  28.             if (i == 15) n15 = long.Parse(Console.ReadLine());
  29.             if (i == 16) n16 = long.Parse(Console.ReadLine());
  30.         }
  31.  
  32.         // Find answer
  33.         int answer = 0;
  34.         int maxi = (int)Math.Pow(2, N) - 1;
  35.         for (int i = 1; i <= maxi; i++)
  36.         {
  37.             long currentSum = 0;
  38.             for (int j = 1; j <= N; j++)
  39.             {
  40.                 if (((i >> (j - 1)) & 1) == 1)
  41.                 {
  42.                     if (j == 1) currentSum += n1;
  43.                     if (j == 2) currentSum += n2;
  44.                     if (j == 3) currentSum += n3;
  45.                     if (j == 4) currentSum += n4;
  46.                     if (j == 5) currentSum += n5;
  47.                     if (j == 6) currentSum += n6;
  48.                     if (j == 7) currentSum += n7;
  49.                     if (j == 8) currentSum += n8;
  50.                     if (j == 9) currentSum += n9;
  51.                     if (j == 10) currentSum += n10;
  52.                     if (j == 11) currentSum += n11;
  53.                     if (j == 12) currentSum += n12;
  54.                     if (j == 13) currentSum += n13;
  55.                     if (j == 14) currentSum += n14;
  56.                     if (j == 15) currentSum += n15;
  57.                     if (j == 16) currentSum += n16;
  58.                 }
  59.             }
  60.             if (currentSum == S) answer++;
  61.         }
  62.  
  63.         // Write output data
  64.         Console.WriteLine(answer);
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement