FaceSwapLive
20.07.2021 12:12

Много !
икт олимпиада
миша - обычный парень. он любит , смотрит сериалы про пони, верит в чудеса, и в то, что на лотереях можно разбогатеть.

каждую неделю миша покупает у аглаи петровны газету с заветной лотереей и пять билетиков с четырёхзначным числом на каждом из них, в надежде выиграть сегодня большой куш.

в газете "авантюрист", которую покупает миша, каждую неделю проводится лотерейный розыгрыш. в газете публикуется какое-то число (не обязательно четырёхзначное, но не более), а в продажу поступают лотерейные билетики. выигрывает тот лотерейный билетик, который будет удовлетворять следующим условиям:

если друг за другом по невозрастанию записать сумму первых двух и последних двух чисел лотерейного билетика, то получается опубликованное в газете на этой неделе число.
число на билетике является максимальынм среди всех подобных чисел на лотерейных билетиках.
миша так давно увлекается этим, что наладил все контакты и знает, какие билеты есть во всех лотерейных киосках в округе. но миша до сих пор не умеет быстро высчитывать абсолютное выигрышное значение. поэтому попросил вас создать алгоритм, который выдавал бы номер счастливого билетика по числу в газете.

формат ввода
в единственной строке вводится число 0 ≤ h < 1 - число, записанное в газете на этой неделе.

формат вывода
выведите единственное число - номер выигрышного билетика этой недели. если такого не существует- выведите 0.

пример
ввод вывод
1412
9593

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Greeegooo
07.09.2021 19:24
Function prime(x:integer):boolean;
var
 t:boolean;
 d:integer;
begin
 t := true;
 d := 2;
 while t and (d*d <= x) do
   begin
   if x mod d = 0 then 
     t := false;
   d := d + 1
   end;
 prime := t
end;

function order(x:integer):boolean;
var
 t:boolean;
 d:integer;
begin
 d := -1;
 repeat
   t := x mod 10 > d;
   d := x mod 10;
   x := x div 10
 until not t or (x = 0);
 order := t
end;

var
 t:boolean;
 i,k,n:integer;
begin
 t := false;
 read(k,n);
 for i := k to n do
   if prime(i) then
   if order(i) then
     begin
     write(i,' ');
     t := true
     end;
 if not t then
   write(0)
end.
0,0(0 оценок)
Ответ:
Gamonga
20.12.2022 02:48
Если ввести X или Y значительно больше чем Z то программа на втором или тертьем условии выдаст false и закончит свою работу ничего не написав. Например: если указать X = 10 , Y = 2, Z = 3; то на первом условии будет true, потому что 10 +2 > 3 , но на третьем условии выдаст false потому что 2+3 < 10 но так как ничего не прописано на этот случай программа просто закончит свою работу.
Что бы исправить этот баг необходимо все условия свести в одно: 
if ((x + y > z)and (x + z > y) and (y + z > x) ) then 
   writeln('треугольник построить можно')
else  
 writeln('треугольник построить нельзя');
end.

Это решение так же является ответом на 3-й вопрос.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота