|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Найти все палиндромы
Помогите написать программу в Console Application.
Найти все палиндромы не большие 4000, т.е. такие числа, которые читаются одинаково сначала и с конца (например, 535, 1221, 474 и т.д.). Вывести все их файл и подсчитать их общее число. Цифры от 0 до 9 тоже считать палиндромами. |
#2
|
||||
|
||||
Не дружу с консолью, вот вариант для вывода в Memo
Код:
uses StrUtils; procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin Memo1.Clear; for i := 0 to 4000 do if IntToStr(i) = ReverseString(IntToStr(i)) then Memo1.Lines.Add(IntToStr(i)); Memo1.Lines.Add(''); Memo1.Lines.Add('Всего палиндромов: ' + IntToStr(Memo1.Lines.Count-1)); end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
Alegun, это полный перебор
Тут можно написать эвристику: length = 1: все от 0 до 9 length = 2: от 1 до 9 два раза (11, 22, 33,...) length = 3: (от 1 до 9 - крайние цифры) на (от 0 до 9 - центр) length = 4: (от 1 до 3 - крайние цифры) на (length = 2 - центр) PS. Это так, упражнение для ума... |
#4
|
||||
|
||||
Код:
program Project1; {$APPTYPE CONSOLE} uses System.SysUtils; function ReverseInt(N: LongInt): Longint; var Buf: LongInt; begin Buf := 0; while N > 0 do begin Buf := Buf * 10 + N mod 10; N := N div 10; end; Result := Buf; end; var i: Integer; begin for i := 0 to 4000 do if i = ReverseInt(i) then Writeln(i); Readln(Input); end. |