![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |