ЗАДАЧА № 90
Постановка задачі:
Жили собі дід і баба, і був у них город прямокутної форми. Довжина городу була А м, а ширина складала В м. Якось дід посварився з бабою і вирішив поділити город порівну. Тепер у діда квадратний город зі стороною С м, відрізаний скраю, а решта дісталася бабі. Визначити, чи не залишилася баба ошуканою та якої форми дістався їй город – прямокутної чи квадратної?
Аналіз алгоритму:
Взагалі задача має дуже простий розв’язок: адже бабуся не буде ошуканою в тому випадку, якщо площа городу, що залишилася для неї, не буде меншою, ніж площа дідусевого городу, тобто
C2<=A×В–С2
Та це тільки на перший погляд. Насправді в даній задачі може бути велика кількість винятків.
Наприклад, якщо дідусь захоче відрізати собі город зі стороною більшою, ніж сторона загального городу, то це неможливо зробити взагалі. Якщо ж він відріже, то город, що залишиться, може мати квадратну (варіант А), прямокутну (варіант Б) або іншу форми (варіант В) (дивись малюнок):

Program Task_90;
Uses crt;
Var А, В, С:real;
Begin
Clrscr;
Write (‘Введіть розміри городу: ‘);
Readln(А, В);
Write(‘Введіть довжину сторони дідусевого городу: ‘);
Readln(С);
If (A<=0)or(B<=0)or(C<=0) Then Writeln (‘Помилкові вхідні дані.’)
Else
Begin
If (C>A) or (C>B)
Then Writeln(‘Дідусь не зможе відрізати город такого розміру.’)
Else
Begin
If A*B–sqr(C)<=sqr(С) Then Writeln(‘Бабуся ошукана.’)
Else Writeln(‘Бабуся не ошукана.’);
If (A<>C) and (B<>C)
Then Writeln(‘Город залишився іншої форми.’)
Else
If ((A=C)and(B/2=C))or((B=C)and(A/2=C))
Then Writeln(‘У бабусі квадратний город.’)
Else Writeln(‘У бабусі прямокутний город.’);
End;
End;
Readkey;
End.
Немає коментарів:
Дописати коментар