QBasic
Палиндромы - строки, читающиеся как слева направо, так и справо налево (одинаково). Нужно создать массив, в который надо вписать числа-палиндромы и пронумеровать их (номер ячейки массива=номер палиндрома). Как создать эти числа палиндромы?
Другие языки программирования и технологии
Числа - палиндромы
Проще всего будет запустить цикл от 0 до N, каждое число которого
перестанавливать в зеркальное отображение (Например 1234 сделать 4321)
если оба числа одинаковы, то это палиндром.
На C++ функция разворота числа будет выглядеть так:
int reverse(int x){
int n = x;
x = 0;
do{
x = x * 10 + (n % 10);
n = n / 10;
} while (n > 0);
return x;
}
На Pascal так:
function reverse(x: integer): integer;
var
i: integer;
begin
i := x;
x := 0;
repeat
x := x * 10 + (i mod 10);
i := i div 10;
until i <= 0;
Result := x;
end;
На бейсик уж переведёшь как-нибудь.
перестанавливать в зеркальное отображение (Например 1234 сделать 4321)
если оба числа одинаковы, то это палиндром.
На C++ функция разворота числа будет выглядеть так:
int reverse(int x){
int n = x;
x = 0;
do{
x = x * 10 + (n % 10);
n = n / 10;
} while (n > 0);
return x;
}
На Pascal так:
function reverse(x: integer): integer;
var
i: integer;
begin
i := x;
x := 0;
repeat
x := x * 10 + (i mod 10);
i := i div 10;
until i <= 0;
Result := x;
end;
На бейсик уж переведёшь как-нибудь.
Их бесконечно много! Хоть на каком промежутке? Или может в известном массиве найти палиндромы?
Их, очевидно, бесконечно много с точки зрения математики. Просто у нас размер числа ограничен и это надо учитывать. А какой он у вас - в вашем задании не написано (может, байт, а может, 64-битное машинное слово) .
Алгоритм примерно такой, если мы взяли в качестве первой цифры A, то и последняя цифра автоматически A, и т. д.
Алгоритм примерно такой, если мы взяли в качестве первой цифры A, то и последняя цифра автоматически A, и т. д.
Если заранее известна длина, то всё просто.
Предположим, что длина = 5
Тогда нужно 3 вложенных цикла:
i = 1…9 (j = 0…9 (k = 0…9))
i, j, k - цифры с которых начинается число
цикл по i начинается с 1, так как i - первая цифра, и если она = 0, то длина будет меньше.
Число вычисляется внутри циклов
N = i*10001 + j*01010 + k*00100
Я специально оставил ведущие 0.
Всего таких чисел 9*10*10 = 900
Сквозной индекс в массиве (начинается с 0)
index = (i-1)*100+j*10+k
Если нужна какая-то другая длина, циклов будет другое количество, но идея та же.
Предположим, что длина = 5
Тогда нужно 3 вложенных цикла:
i = 1…9 (j = 0…9 (k = 0…9))
i, j, k - цифры с которых начинается число
цикл по i начинается с 1, так как i - первая цифра, и если она = 0, то длина будет меньше.
Число вычисляется внутри циклов
N = i*10001 + j*01010 + k*00100
Я специально оставил ведущие 0.
Всего таких чисел 9*10*10 = 900
Сквозной индекс в массиве (начинается с 0)
index = (i-1)*100+j*10+k
Если нужна какая-то другая длина, циклов будет другое количество, но идея та же.
Похожие вопросы
- Помогите написать задачу по C++ Дана строка. найти в ней самое длинное слово-палиндром.
- Из входной строки напишите программу, чтобы найти самый длинный палиндром, который существует. C++
- Генератор Случайных Чисел
- помогите решить задачи на паскале 1Во входном файле дана последовательность чисел. Требуется найти второе по величине чи
- При делении отрицательного числа выводит не правильный ответ (assembler). Если беру числа 127 13 10, пишет переполнение
- Как написать программу, которая будет представлять вещественное число в памяти компьютера
- помогите решить задачу Во входном файле дана последовательность чисел , число (количество чисел в после
- аскаль. Написать программу которая переводит число из одной системы счисления в другую
- Узнать сколько знаков после запятой в числе? Visual Basic
- задача "найти пары чисел"