Комбинации из трех чисел, дающие в сумме заданное число
Задача
Написать программу, которая находит все комбинации из трех чисел до определенного предела, которые в сумме дают другое число.
Предел трех чисел и заданное число-сумму вводить с клавиатуры.
Решение
var i,j,k,sum, N,S: word; begin write('Предел для перебираемых чисел: '); readln(N); write('Искомая сумма: '); readln(S); for i:=1 to N do for j:=1 to N do for k:=1 to N do begin sum := i + j + k; if sum = S then writeln(i,' ',j,' ',k); end; end.
Пример выполнения программы:
Предел для перебираемых чисел: 5 Искомая сумма: 10 1 4 5 1 5 4 2 3 5 2 4 4 2 5 3 3 2 5 3 3 4 3 4 3 3 5 2 4 1 5 4 2 4 4 3 3 4 4 2 4 5 1 5 1 4 5 2 3 5 3 2 5 4 1
В данном случае надо найти комбинации из трех чисел, принимающих значения от 1 до 5, которые в сумме дают 10. Как видно из примера, их не так уж мало: 18 комбинаций.
В программе на языке Паскаль используются три цикла for
, два из которых вложенные. Каждый цикл перебирает числа от 1 до N (в данном случае до 5). В самом внутреннем цикле вычисляется сумма счетчиков, если она равна заданной сумме, то их значения выводятся на экран.