Соответствие суммы значений в строке

У меня есть строка числовых значений, разделенных пробелами:

70 58 81 909 70 215 70 1022 580 930 898 70 276 31 11 **920 898** 1503 195 770 573 508 1015 31 8 815 1478 31 1022 31 1506 31 **318 500 358 865** 358 991 518 58 450 420 487 31 1478 108 70 1022 31 215 318 500 61 31 655 1061 918 54 898 31 8 1011 9 8 459 346 770 751 31 346 770 880 1171 688 1680 31 1002 769 500 61 8 702 898 8 1206 31 709 565 8 138 58 215 81 1171 31 288 500 380 70 284 1500 565 31 601 55 1501 490 565 530 56 990 380 1061 770 345 1171 31 55 1100 605 1471 1234 **31 470 725 358 114 56 9 55** 1100 1610 1471 1000 971 565 55 1100 1610 1061 770 345 949 31 370 52 688 1680 770 880 1171 163 249 151 489 653 56 990 380 503 490 770 1376 1056 31 8 64 490 565 55 108 56 1178 501 653 898 860 565 31 315 61 509 108 501 653 31 349 249 151 489 246 56 990 380 1070 573 1663 725 821 31 70 373 1171 490 565 55 108... 

Я хочу получить все вхождения строки, где суммарная сумма чисел равна х. Итак, если я ищу: 2041, он должен вернуть массив («318 500 358 865»), или если я ищу: 1818, он должен вернуть массив («920 898», «31 470 725 358 114 56 9 55»).

Мне также нужно, чтобы решение было оптимальным, потому что строка чисел может составлять до сотни тысяч.

Принцип, объясненный в теории, был бы хорош, но предпочтительными языками являются PHP или NodeJs, если решение дается языком программирования. Даже решение MySQL было бы неплохо, если это было возможно. Но решение любого языка было бы неплохо в любом случае.

Дополнительные примечания

  • числа – это целые положительные числа
  • числовые значения от 1 до 1 000