Можно написать программу на каком-либо языке программирования. Например Python:
n = 66 count = 0 for i in range(67): for j in range(34): for k in range(14): for l in range(7): if n == i*1+j*2+k*5+l*10: count += 1 print('Всего
Та же программа на языке Pascal:
var i,j,k,l,n,count:integer;
begin n := 66; count := 0; for i:=0 to 66 do for j:=0 to 33 do for k:=0 to 13 do for l:=0 to 6 do if n = (i*1+j*2+k*5+l*10) then count += 1; writeln('Всего end.
ответ: 700
kazimov832
19.07.2020
Вариант понимания условия №1. Мы достаём монеты по одной, и порядок монет важен (т.е., например, если мы вытащили сначала монету 1 рубль, потом 5 рублей и если сначала 5 рублей, потом 1 рубль - разные Обозначим C(n) - число набрать n рублей. Очевидно, C(n) = C(n-1) + C(n-2) + C(n-5) + C(n-10) [Представим себе. что мы знаем число набрать n-5 рублей. Тогда если мы уверены, что последней вытащили 5-рублёвую монету, то будет C(n). Финальный ответ - сумма по всем возможным выборам последней монеты] Полагая C(n) = 0 при всех n < 0, C(0) = 1, получим по этой формуле С(66) = 1431020833989040 Cчитать можно, например, такой программой: var C: array[-9..66] of BigInteger; begin for var i := -9 to -1 do C[i] := 0; C[0] := 1; for var i := 1 to 66 do C[i] := C[i - 1] + C[i - 2] + C[i - 5] + C[i - 10]; print(C[66]); end. Вариант понимания условия №2. Нам порядок выдачи не важен. Тогда вопрос по сути сводится к числу целых неотрицательных решений уравнения x + 2y + 5z + 10t = 66, где x, y, z, t - число 1-, 2-, 5- и 10-рублёвых монет соответственно. Тут можно написать общую формулу, но она будет объемной, так что вычислять по ней совсем не радостно (даже с компьютером). Поэтому проще все варианты перебрать. ответ получится 700. Пример программы: begin var count := 0; for var t := 0 to 6 do for var z := 0 to (66 - 10*t) div 5 do for var y := 0 to (66 - 10*t - 5*z) div 2 do inc(count); print(count); end.
Подобным образом можно считать и вручную. По сути нам требуется вычислить сумму [1 + (66 - 10t - 5z)/2] по всем допустимым t, z ([x] - целая часть x). Перебираем сначала t, потом z: t = 0. z = 0,1,2,...,13. Вклад в сумму 34 + 31 + 29 + 26 + 24 + 21 + 19 + 16 + 14 + 11 + 9 + 6 + 4 + 1 = 245. t = 1. z = 0,1,2,...,11. Легко понять, что здесь будут все числа без первых двух слагаемых: 29 + 26 + 24 + 21 + 19 + 16 + 14 + 11 + 9 + 6 + 4 + 1 = 245 - 34 - 31 = 180 Аналогично, t = 2: 180 - 29 - 26 = 125 t = 3: 125 - 26 - 21 = 80 t = 4: 80 - 19 - 16 = 45 t = 5: 45 - 14 - 11 = 20 t = 6: 20 - 9 - 6 = 5 Итого 245 + 180 + 125 + 80 + 45 + 20 + 5 = 700
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Какую вы знаете интегрированную среду визуального программирования на паскале? на какой реализации языка паскаль она основана?