Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Простая прога [D7, XP]


\/ainu ©   (2007-02-22 17:51:00) 

Привет, помогите пожалуйста написать простеньеую программу для решения следующей задачи: нужно найти четырёх значное число сумма чисел которого равна 16, произведения этих чисел равно 180. тАкже известно что первые две цифры чётные а вторые две нет.Простите за такой тупой вопрос но я только начинаю изучать делфи(мне всего 12 лет) и не знаю как сделать это.


Allexandr   (2007-02-22 20:09:00) [1]


> Virgo_Style ©   (22.02.07 19:24) [8]
>
> число klmn, т.е. K*1000+L*100+m*10+n;
> два первых - четные, тогда обозначим K = 2k, L = 2l.
>
> тогда
> 2k+2l+m+n = 16
> 2k*2l*m*n = 180;
>



Я согласен с этим, но есть одно но. Уважаемый Virgo_Style упустил из виду, что последние два числа должны быть нечетными. А в Вашем решении m и n могут быть как четными, так и нечетными.


\/ainu   (2007-02-22 20:04:00) [2]

а почему оно равно  K*1000+L*100+m*10+n и вообще что это значит умножить на 1000,100,10?
Вообщето я уже нашёл это число(2356), точнее это сделал моя прога. Но просто интересно что это за алгоритм который предложил Virgo_Style.
Если можно то напишите полное решение по этому методу.


Virgo_Style   (2007-02-22 19:59:00) [3]

\/ainu   (22.02.07 19:47) [12]
K*1000+L*100+m*10+n


K, L, m, n - это цифры числа, которое равно K*1000+L*100+m*10+n


\/ainu   (2007-02-22 19:47:00) [4]

Virgo_Style ©   (22.02.07 19:24) [8]
Чё то я ничего не понял, что это значит K*1000+L*100+m*10+n;
Я попробывал написать прогу для перебора, но как я уже сказал у меня нет опыта в написании программ вот что у меня получилось
k:=k+1;
if k=9 then begin
k:=0;
l:=l+1;
if l=9 then  begin
l:=0;
m:=m+1;
if m=9 then begin
m:=0;
n:=n+1;
if n=9 then  begin
n:=0;
if (k+l+m+n=16) and (k*l*m*n=180) then begin
listbox1.Items.add(inttostr(k));
listbox1.Items.add(inttostr(l));
listbox1.Items.add(inttostr(m));
listbox1.Items.add(inttostr(n));
timer1.Enabled:=false;
end;
end;
end;
end;
end;
Но она не работает(хотя это меня не удевляет)


Virgo_Style   (2007-02-22 19:33:00) [5]

Kolan ©   (22.02.07 19:25) [9]
imo перебирать удобнее цифры, учитывая при этом сказанное мной выше


koha   (2007-02-22 19:32:00) [6]


> \/ainu   (22.02.07 17:51) 
> Привет, помогите пожалуйста написать простеньеую программу
> для решения следующей задачи: нужно найти четырёх значное
> число сумма чисел которого равна 16, произведения этих чисел
> равно 180


произведение 4х значных чисел ни когда не может ровннять 180 по определению.


Kolan   (2007-02-22 19:25:00) [7]

«нужно найти четырёх значное число сумма чисел которого равна
16, произведения этих чисел равно 180.»

Для начала попробуй перебором.

Четырёх значное значит ровно 4 цифры(1000-9999).
Передирай числа от 1000 до 9999 и проверяй свои условия(сумма чисел равна 16, произведения этих равно 180).


Virgo_Style   (2007-02-22 19:24:00) [8]

число klmn, т.е. K*1000+L*100+m*10+n;
два первых - четные, тогда обозначим K = 2k, L = 2l.

тогда
2k+2l+m+n = 16
2k*2l*m*n = 180;


Из второго равенства, зная, что k,l,m,n - целые, получим возможные их значения. Подставляя их в первое уравнение (дело упрощается тем, что k,l<=4), найдем удовлетворяющий нас вариант


\/ainu   (2007-02-22 19:09:00) [9]

Virgo_Style ©   (22.02.07 19:07) [6]
Подскажи пожалуйста как хотябы на бумаги это решить, а я сам попробую прогу написать.


Virgo_Style   (2007-02-22 19:07:00) [10]

кстати, на бумаге тоже решается на раз-два


Virgo_Style   (2007-02-22 19:00:00) [11]

\/ainu   (22.02.07 18:11) [4]
ну хоть полный перебор, для начала-то


\/ainu   (2007-02-22 18:11:00) [12]

А какай тут может быть алгоритм, есть числа где первые две цифры чётные а вторые две нет, и если сумма числа  равна 16, произведения 180, то это и есть правильный ответ.


Джо   (2007-02-22 18:07:00) [13]

> [2] \/ainu   (22.02.07 18:05)
> На бумаге очень долго, я по этому и хотел сделать это программно

СНАЧАЛА распиши алгоритм на бумаге. А потом уже переводи его в код. Если нет алгоритма, то и код сам собой не напишется :)


\/ainu   (2007-02-22 18:05:00) [14]

На бумаге очень долго, я по этому и хотел сделать это программно


Megabyte   (2007-02-22 18:00:00) [15]

Дельфи тут не причем, обычная логика.
Реши на бумаге, а названия функций мы тебе подскажем...


Наверх

Титульная страница Поиск, карта сайта Написать письмо