ИНФОРМАТИКА! ПОМОГИТЕ ПРОШУ! Автомат получает на вход трехзначное число. По этому числу строится новое число по следующим правил
ИНФОРМАТИКА! ПОМОГИТЕ ПРОШУ! Автомат получает на вход трехзначное число. По этому числу строится новое число по следующим правилам: 1) складывается первая и вторая а также вторая и третья цифры исходного числа 2)полученные два числа записываются друг за другом в порядке убывания(без разделителей) Пример. Исходное число 348. Суммы:3+4=7 4+8=12. Результат:127. Сколько существует чисел в результате обработки которых автомат выдаст число 1715?
1. Рассмотрим вариант построения числа 1715 при условии a+b=17, b+c=15. Число 17 можно получить только двумя способами: 9+8=17 и 8+9=17. Отсюда получаем два варианта: (a=9; b=8) и (a=8; b=9). (1) Число 15 можно получить тоже двумя способами, полагая, что одно из слагаемых (b) равно 8 или 9: 9+6 и 8+7, что тоже дает два варианта: (b=9; c=6) и (b=8; c=7). (2) Объединяя (1) и (2) получаем (a=9; b=8; c=7) и (a=8; b=9; c=6), т.е. у нас по-прежнему есть два варианта решения. 2. Теперь рассмотрим вариант построения числа 1715 при условии a+b=15, b+c=17 и упорядочения 17, 15 по убыванию. Легко видеть, что решение будет "симметричным": (a=7; b=8; c=9) и (a=6; b=9; c=8) и это также даст нам два варианта. 3. Объединяя результат получаем, что всего имеется четыре решения, т.е. четыре числа (698, 789, 896, 987). <u><em>Ответ:</em></u> 4 числа.
<em><u>Проверка решения программным путем (Borland Pascal 7.0)</u></em> uses Crt; var a,b,c,ab,bc,t,k:byte; s1,s2:string; begin ClrScr; k:=0; for a:=0 to 9 do for b:=0 to 9 do for c:=0 to 9 do begin ab:=a+b; bc:=b+c; if ab<bc then begin t:=ab; ab:=bc; bc:=t end; Str(ab,s1); Str(bc,s2); if s1+s2='1715' then begin WriteLn(a,b,c); Inc(k) end end; Writeln('kol-vo=',k); ReadKey end.
<em><u>Результат выполнения программы:</u></em> 698 789 896 987 kol-vo=4
Program zzz; var days:integer; var discount, sum:real; var days2:integer; begin readln(days, discount, sum); days2 := 0; sum := 0; discount := discount / 10; while( days2 <= days ) do begin sum := sum + (sum * discount); {я не до конца понял задание, посему, скорее всего, придется тут менять} sum := sum + 3; days2 := days2 + 1; end; writeln('Ответ: ', sum); <span>end.</span>
while i < 1000 do begin if (i * 2 mod 10 = 8) and (i * 3 mod 10 = 4) then write(i, ' ') else k:= k + 1; i:= i + 1; end; if k = 900 then writeln('Таких чисел не существует!');end.