Const n=20; var a: array[1..n] of integer; i,j,t,x,i1,i2: integer; begin randomize; writeln('исходный массив: '); for i: =1 to n do begin a[i]: =random(21); write(a[i],' ') end; writeln; for i: =1 to n-1 do for j: =1 to n-i do if a[j]< a[j+1] then begin t: =a[j]; a[j]: =a[j+1]; a[j+1]: =t end; writeln('отсортированный массив: '); for i: =1 to n do write(a[i],' '); writeln; write('x = '); readln(x); i1: =1; i2: =n; repeat i: =(i1+i2) div 2; if a[i]> x then i1: =(i1+i2) div 2+1; if a[i]< x then i2: =(i1+i2) div 2-1; until (a[i]=x)or(i1> i2); if a[i]=x then begin writeln('искомый(ые) номер(а) элемента(ов): '); while (i> 0)and(a[i]=x) do i: =i-1; i: =i+1; while (i< =n)and(a[i]=x) do begin write(i,' '); i: =i+1; end; end else writeln('элемент не найден'); writeln; end. pascal abc.
Косарев
13.02.2020
Япрограммное решение, так как это все-таки информатика. аналитическое решение ищите по ссылке в комментариях код на ruby 2 def f0(number, log) # v = 1 n = number + v log = "#{log}a" return [n, log] end def f1(number, log) # v = 2 n = number + v log = "#{log}b" return [n, log] end def f2(number, log) # v = 3 n = number + v log = "#{log}c" return [n, log] end def countways(start_num, end_num, op_number, max_steps = 0) ways = {} ways.store(start_num.to_s, start_num) max_steps = max_steps == 0 ? (start_num - end_num).abs : max_steps count = 0 for steps in 1..max_steps new_ways = {} ways.each_pair{|log, num| for k in 0..op_number-1 num1, log1 = f0(num, log) if k == 0 num1, log1 = f1(num, log) if k == 1 num1, log1 = f2(num, log) if k == 2 if num1 == end_num then log1 += " = " + end_num.to_s count += 1 # puts log1 elsif num1.between? (start_num, end_num) new_ways.store(log1, num1) end end } ways = new_ways end return count end p countways(0, 11, 3) # с 0 до 11, 3 разных команды вывод 504 поскольку длина путей до ценного объекта и от объекта до базы - равны, то всего вариантов 504*504 = 254016