Использовать Чертежник алг нач опустить перо сместиться на вектор (0,4) сместиться на вектор (-1,-1) поднять перо сместиться на вектор (4,-3) опустить перо сместиться на вектор (-2,0) сместиться на вектор (2,2) сместиться на вектор (0,2) сместиться на вектор (-2,0) поднять перо сместиться на вектор (3,0) опустить перо сместиться на вектор (2,0) сместиться на вектор (-2,-2) сместиться на вектор (2,0) сместиться на вектор (-2,-2) поднять перо сместиться на вектор (5,0) опустить перо сместиться на вектор (0,4) сместиться на вектор (-2,-3) сместиться на вектор (2,0) поднять перо сместиться на вектор (1,-1) опустить перо сместиться на вектор (2,0) сместиться на вектор (0,2) сместиться на вектор (-2,0) сместиться на вектор (0,2) сместиться на вектор (2,0) кон
1. Задача решается с стека (алгоритм Дейкстры для обработки обратной польской записи). Предполагается, что во вводимой строке содержится корректное выражение, удовлетворяющее условиям задания.
// PascalABC.NET 3.3, сборка 1555 от 21.10.2017 // Внимание! Если программа не работает, обновите версию!
begin var w:=ReadlnString.ToWords; var St:=new Stack <integer>; var r:=0; foreach var t in w do if t[1].IsDigit then St.Push(t.ToInteger) else begin var a:=St.Pop; var b:=St.Pop; case t[1] of '+':St.Push(a+b); '-':St.Push(b-a); '*':St.Push(a*b) end; end; Writeln(St.Pop) end.
Контрольный пример 8 9 + 1 7 - * -102
2. Задача крайне просто решается при регулярного выражения с рекурсией. Фактически вводить количество шаров не нужно, поэтому после ввода оно отбрасывается.
// PascalABC.NET 3.3, сборка 1555 от 21.10.2017 // Внимание! Если программа не работает, обновите версию!
begin Writeln(ReadlnString.ToWords.Skip(1).JoinIntoString(''). MatchValue('(.)\1{2,}').Length); end.
// PascalABC.NET 3.3, сборка 1562 от 02.11.2017 // Внимание! Если программа не работает, обновите версию!
procedure ЗаменаЦифры(Исходное,Заменяющее:int64; var Результат:string); begin var ИсхСтрока:=Исходное.ToString; var ЗамСтрока:=Заменяющее.ToString; Результат:=ИсхСтрока.Replace(ИсхСтрока.ToCharArray.Max,ЗамСтрока) end;
begin var КоличествоЧисел:=ReadInteger('Введите количество чисел для обработки:'); var ОчередноеИсходное,ОчередноеЗаменяющее:int64; var РезультатЗамены:string; Loop КоличествоЧисел do begin Write('Введите исходное целое число: '); Read(Очередноеисходное); Write('Введите целое число для замены: '); Read(ОчередноеЗаменяющее); ЗаменаЦифры(ОчередноеИсходное,ОчередноеЗаменяющее,РезультатЗамены); Writeln('Результат замены: ',РезультатЗамены) end end.
Пример Введите количество чисел для обработки: 5 Введите исходное целое число: 15630 Введите целое число для замены: 8 Результат замены: 15830 Введите исходное целое число: 235235 Введите целое число для замены: 11 Результат замены: 23112311 Введите исходное целое число: 6 Введите целое число для замены: 352 Результат замены: 352 Введите исходное целое число: 999 Введите целое число для замены: 88 Результат замены: 888888 Введите исходное целое число: 12307347740 Введите целое число для замены: 131313 Результат замены: 12301313133413131313131340
алг
нач
опустить перо
сместиться на вектор (0,4)
сместиться на вектор (-1,-1)
поднять перо
сместиться на вектор (4,-3)
опустить перо
сместиться на вектор (-2,0)
сместиться на вектор (2,2)
сместиться на вектор (0,2)
сместиться на вектор (-2,0)
поднять перо
сместиться на вектор (3,0)
опустить перо
сместиться на вектор (2,0)
сместиться на вектор (-2,-2)
сместиться на вектор (2,0)
сместиться на вектор (-2,-2)
поднять перо
сместиться на вектор (5,0)
опустить перо
сместиться на вектор (0,4)
сместиться на вектор (-2,-3)
сместиться на вектор (2,0)
поднять перо
сместиться на вектор (1,-1)
опустить перо
сместиться на вектор (2,0)
сместиться на вектор (0,2)
сместиться на вектор (-2,0)
сместиться на вектор (0,2)
сместиться на вектор (2,0)
кон