Другие языки программирования и технологии

Можно ли 1000 рублей набрать купюрами по 1, 10, 100 рублей, если общее количество этих купюр равно 40?

Где я опять напортачил, подскажите пожалуйста.

var
x,y,z:integer;
begin
for x:=0 to 9 do
for y:=0 to 9 do
for z:=0 to 9 do
writeln(x,' ',y,' ',z);
begin
if (1*x+10*y+100*z=1000) and (x+y+z=40)
then writeln(x,' ',y,' ',z);
end;
end.
Нет, нельзя. Если не больше 40, то купюр может быть только 10, 19, 28 или 37.

И три цикла не нужны - достаточно двух:

for x := 0 to 40 do
for y := 0 to 40 - x do
if x + 10 * y + 100 * (40 - x - y) = 1000 then writeln(x, ' ', y, ' ', 40 - x - y)
Александр Алёшин
Александр Алёшин
98 439
Лучший ответ
Уж тяни в циклах до 40. Почему только до 9?
Алмат Искаков Ну так всё равно ничего не поменялось ((
получаем, что нам нужно решить систему уравнений в целых числах
x+10y+100z=1000
x+y+z=40

9y+99z=960
3y+33z=320
y=(320-33z)/3
y=320/3-11z
очевидно, что любое целое z умножая на целое 11 невозможно привести к дроби a/3 -> при любом целом z - y целым не получается -> система уравнений в целых числах решений не имеет

PS: зачем программистам математика?
Нельзя так набрать

var
x,y,z,flag:integer;
begin
flag:=0;
for x:=0 to 40 do
for y:=0 to 40 do
for z:=0 to 10 do
if (1*x+10*y+100*z=1000) and (x+y+z=40)
then begin
writeln(x,' ',y,' ',z);
flag:=1;
end;
if (flag=0) then writeln('Нельзя набрать 1000 рублей купюрами по 1, 10, 100 рублей так, чтобы общее количество купюр было равно 40');
end.
СК
Сергей К
55 711
Может цикл должен быть больше десяти итераций?
10 купюр по 100 = 1000 рублей
Можно 8 купюр по 100, а 20 по 10 рублей.
Так что если не требуется ровно 40 купюр, то можно. И ещё останется. Да и если требуется ровно 40 - тоже можно.
Flippy ™
Flippy ™
8 969
а в паскале разве не надо после каждого for ставить begin? мб я и ошибаюсь, давно на нём не писал
Artem Dmitriev Не надо.
x+10y+100(40-x-y)=1000
x+10y+4000-100x-100y=1000
4000-99x-99y=1000
99(x+y)=3000
x+y=3000:99
т. е. не получится поскольку не делится в целых числах