St=(V3-V1)*(Y-N+Z)
Вочевидь, турист встигне підсісти на теплохід тільки в тому випадку, якщо відстань S t буде не менше, ніж відстань, на яку теплохід перегнав туриста. Програма, що реалізує запропонований алгоритм, має вигляд:
Program Example_89;
Uses crt;
Var Vl,V2,V3:real;
N,Y,Z : real;
Begin
Clrscr;
Write(‘Введіть швидкості теплоходу та туриста: ‘);
Readln(VI,V2);
Write (‘Введіть час, через який турист підсів на теплохід:’) ;
Readln(N);
Write(‘Введіть швидкість, з якою турист плив за теплоходом,
час зупинки теплоходу, та тривалість зупинки:’) ;
Readln(V3,Y,Z);
If (Vl<=0)or(V2<=0)or(V3<=0)or(N<=0)or(Y<=0)or(Z<=0)
Then writeln(‘Помилкові вхідні дані’)
Else
Begin
S: = (V1+V2)*N;
St: = (V3-Vl)*(Y-N+Z) ;
If St>=S
Then writeln(‘Турист встигне на теплохід.’)
Else writeln(хТурист не встигне на теплохід.’);
End;
Readkey;
End.
ЗАДАЧА № 90
Умова: Жили собі дід і баба, і був у них город прямокутної форми. Довжина городу була А м, а ширина складала В м. Якось дід посварився з бабою і вирішив поділити город порівну. Тепер у діда квадратний город зі стороною С м, відрізаний скраю, а решта дісталася бабі. Визначити, чи не залишилася баба ошуканою та якої форми дістався їй город - прямокутної чи квадратної?
Взагалі задача має дуже простий розв’язок: адже бабуся не буде ошуканою в тому випадку, якщо площа городу, що залишилася для неї, не буде меншою, ніж площа дідусевого городу, тобто
C2<=а В-С2
Та це тільки на перший погляд. Насправді в даній задачі може бути велика кількість винятків.
Наприклад, якщо дідусь захоче відрізати собі город зі стороною більшою, ніж сторона загального городу, то це неможливо зробити взагалі. Якщо ж він відріже, то город, що залишиться, може мати квадратну (варіант А), прямокутну (варіант Б) або іншу форми (вариант В) (дивись малюнок):
Програма, що реалізує запропонований алгоритм, має вигляд:
Program Example_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 (OA) or (OB)
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.
ЗАДАЧА № 91
Умова: Трьом Товстунам подали на десерт кремові тістечка. Маса одного тістечка — Хкг, а маса Товстунів відповідно X 1 кг,Х 2 кг та Х 3 кг. Перший Товстун з’їв N тістечок. Кожний наступний Товстун з’їдав у два рази більше від попереднього, але при цьому він не міг з’їсти більше половини своєї власної ваги. Скільки тістечок було з’їдено Товстунами за обідом?
Зверніть увагу на те, що другий та третій Товстуни за умовою можуть з’їсти тістечок у два рази більше, ніж попередній Товстун, але не можуть з’їсти більше половини своєї ваги. Тому фактично в задачі необхідно перевірити, чи не перевищує кількість тістечок, що може з’їсти кожний Товстун, дозволену масу, і у відповідності до цього підрахувати кількість тістечок, що були з’їдені.
Наприклад, якщо другий Товстун може з’їсти 2 N тістечок, то вага цієї їжі буде 2 N Хкг. Але за умовою він не може з’їсти більше половини своєї ваги, тобто більше ніж X 1 / 2 кг. Тому якщо вага тих тістечок, що Товстун може з’їсти, не перевищує поріг X 1 /2 кг, то ми до загальної кількості тістечок додаємо всі можливі, тобто 2 N , якщо ж перевищує, то ми додаємо тільки ту кількість тістечок, що не дозволяє перевищити припустимий поріг, тобто X 1 /2 / X (дозволена вага їжі поділена на вагу одного «тістечка). Якщо в цьому випадку число вийде нецілим, то це означає, що Товстун з’їв тістечко не повністю. Щоб такого не трапилось, ми робимо відкидання дробової частини після ділення за допомогою функції trunc .
Читать дальше