Choose from an existing set of weights to make a target sum
MATL, 29 28 bytes
4t:qEZ^!"[l2.5AX]@Y*10+G=?@.
For inputs that have no solution this produces an empty output (without error).
Try it online!
Explanation
4 % Push 4
t:q % Duplicate 4 and transform into range [0 1 2 3]
E % Multiply by 2: transform into [0 2 4 6]
Z^ % Cartesian power. Each row is a "combination" of the four numbers
! % Transpose
" % For each column
[l2.5AX] % Push [1 2.5 5 10]
@ % Push current column
Y* % Matrix multiply. Gives sum of products
10+ % Add 10
G= % Compare with input: are they equal?
? % If so
@ % Push current column, to be displayed
. % Break loop
% Implicit end
% Implicit end
% Implicit display
Mathematica, 70 bytes
Select[FrobeniusSolve[{2,5,10,20},2#-20],AllTrue[EvenQ@#&&#<7&]][[1]]&
Anonymous function. Takes a number as input, and either outputs a list or errors and returns {}[[1]]
if there is no solution.
Jelly, 22 bytes
4ṗạµ×2,5,10,20S€+⁵iƓịḤ
Try it online! or verify all test cases.
How it works
4ṗạµ×2,5,10,20S€+⁵iƓịḤ Main link. No arguments
4 Set the left argument and initial return value to 4.
ṗ Take the Cartesian power of [1, 2, 3, 4] and 4, i.e.,
generate all 4-tuples of integers between 1 and 4.
ạ Take the absolute difference of all integers in the
4-tuples and the integer 4. This maps [1, 2, 3, 4] to
[3, 2, 1, 0] and places [0, 0, 0, 0] at index 0.
µ Begin a new, monadic chain. Argument: A (list of 4-tuples)
2,5,10,20 Yield [2, 5, 10, 20].
× Perform vectorized multiplication with each 4-tuple in A.
S€ Sum each resulting 4-tuple.
+⁵ Add 10 to each sum.
Ɠ Read an integer from STDIN.
i Find its first index in the array of sums (0 if not found).
Ḥ Unhalve; yield the list A, with all integers doubled.
ị Retrieve the 4-tuple at the proper index.