TopcoderArchive
Archive
Algorithm problem

TheLuckyNumbersLevelTwo

Problem statement, definition, constraints, and public examples.

Problem Statement

The digits 4 and 7 are lucky digits, and all other digits are unlucky. A second level lucky number is a positive integer whose decimal representation contains either all 4's or all 7's. John and Brus have a set of integers, and they would like to find the subset whose sum is a second level lucky number.

You are given int[] numbers, the set of integers that John and Brus have. Return a int[] containing the subset whose sum is a second level lucky number. The return value must be sorted in ascending order. If there are multiple possible return values, return the one with the largest sum. If there is a tie, return the one that comes earliest lexicographically. A int[] a1 comes before a int[] a2 lexicographically if a1 contains a smaller number at the first index where they differ. If there are no possible subsets, return an empty int[] instead.

Definition

Class:
TheLuckyNumbersLevelTwo
Method:
find
Parameters:
int[]
Returns:
int[]
Method signature:
int[] find(int[] numbers)
(be sure your method is public)

Constraints

  • numbers will contain between 1 and 34 elements, inclusive.
  • Each element of numbers will be between 1 and 1,000,000,000, inclusive.
  • All elements in numbers will be distinct.

Examples

  1. {1, 2, 3, 4}
    Returns: {1, 2, 4 }
    Here it's possible to get two second level lucky numbers - 4 and 7. There are two subsets with a sum of 7 - {3, 4} and {1, 2, 4}. We will choose the last one because it is lexicographically smaller.
  2. {12, 43, 29}
    Returns: { }
    There are no subsets whose sum is a second level lucky number.
  3. {4, 7}
    Returns: {7 }
  4. {41, 2, 28, 44, 7, 42, 21}
    Returns: {7, 28, 42 }
  5. {15, 10, 28, 3, 13, 27, 7}
    Returns: {7, 15, 27, 28 }
  6. {18, 45, 6}
    Returns: { }
  7. {34, 20, 26, 28, 33, 23, 44, 40, 25, 10, 36, 14, 7, 29, 21, 27, 17, 13, 19, 24, 32, 41, 31}
    Returns: {7, 10, 13, 14, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 31, 32, 34, 44 }
Back to all problems