Составьте программу которая будет находить числа палиндромы из заданного промежутка

Условие задачи: «Назовем число палиндромом, если оно не меняется при перестановке его цифр в обратном порядке. Напишите программу, которая по заданному числу K выводит количество натуральных палиндромов, не превосходящих K.» Вот как выглядит моё решение:

K = int(input()) countNumber = 0 a = 0 flip = 0 Number = 0 countFlip = 0 while countNumber 0: a = Number % 10 Number = Number // 10 flip = flip * 10 + a if countNumber == flip: countFlip += 1 print(countFlip)

  • Вводятся числа K, счетчик, который завершит работу цикла; переменные a, Number и flip для «переворота» числа; и счетчик countFlip для подсчета палиндромов.
  • счетчик countNumber будет увеличиваться до тех пор, пока не будет равен K;
  • каждое увеличение счетчика будет приравниваться переменной Number для вычисления самого «перевёртыша» во вложенном цикле.
  • В случае, если «перевёртыш» является палиндромом, cчетчик countFlip увеличивается.

При запуске программы, что бы я не вводил, программа выдаёт «1». Почему?

Разбор задачи 9 leetcode.com Palindrome Number. Решение на C++

Заранее благодарю за помощь!

Источник: ru.stackoverflow.com

В промежутке [m, n] найти все палиндромы и подсчитать их количество. — Pascal ABC

В промежутке [m, n] найти все палиндромы и подсчитать их количество.

Код к задаче: «В промежутке [m, n] найти все палиндромы и подсчитать их количество.»

Листинг программы

program z1; function IsPalindrom(const i: Integer): Boolean; var t, k, d: Integer; begin Result := False; k := i; t := 0; while k <> 0 do begin d := k mod 10; k := k div 10; t := t * 10 + d; end; if t = i then Result := True; end; var i, f, t, l: Integer; begin Write(‘Введите диапазон значений через пробел: ‘); ReadLn(f, t); l := 0; for i := f to t do begin if IsPalindrom(i) then begin Inc(l); //WriteLn(i); end; end; WriteLn(‘В промежутке ‘, f, ‘ — ‘, t, ‘ найдено палиндромных чисел: ‘, l); end.

Читайте также:
Программа меридиан для авиакомпаний как работает

Источник: studassistent.ru

Алгоритм

n — для границы значений натуральных чисел, m — для числа, с которым сравнивается квадрат суммы цифр (точный квадрат), k — для натуральных чисел от 1 до n, a — для запоминания натурального числа, перед тем, как будет определяться сумма его цифр, p — для цифр числа, s — для суммы цифр.

2. Раздел операторов.

Ввод значений n и m. Установить первоначальное значение для k (эта переменная «перебирает» все натуральные числа от 1 до n, k := 1).

Цикл, пока k

LeetCode #9 — Palindrome Number

В цикле: установить первоначальные значения для суммы s (s:=0); запомнить число в переменную a (a := k).

Цикл для подсчета суммы цифр, пока k <> 0.

В цикле: выделять по одной цифре числа, известным способом; прибавлять по одной цифре к сумме; уменьшать число на последнюю цифру и на порядок.

Закончить цикл для подсчета суммы цифр.

Проверка выполнения условия.

Если квадрат суммы цифр равен заданному числу,

тогда вывести это натуральное число на экран.

Перейти к проверке следующего числа.

Закончить основной цикл проверки чисел.

3. Закончить программу.

По этому алгоритму составим программу.

n, m, k, a, p, s : integer;

write(‘Введите натуральное число, до которого ‘);

write(‘выводить искомые числа ‘); readln(n);

writeln(‘Введите число, с которым сравниваете квадрат’);

write(‘его суммы цифр. Оно должно быть точн. квадрат. ‘); readln(m);

if sqr(s) = m then write(a, ‘ ‘);

Пример 10. Найти наименьшее натуральное число, дающее при делении на 2, 3, 4, 5, 6 соответственно остатки 1, 2, 3, 4, 5.

Задачу будем решать так: берется наименьшее натуральное число — единица и находятся остатки от деления его на 2, 3, 4, 5 и 6; если остатки будут равны 1, 2, 3, 4 и 5, тогда это число является искомым, его надо выдать на экран и закончить программу, в противном случае, надо брать следующее натуральное число — 2 и проверять его, и так далее.

Читайте также:
Полезные программы для детей 7 лет

Программа, составленная по этой идее, очень проста:

until (n mod 2 = 1) and (n mod 3 = 2) and (n mod 4 = 3) and

(n mod 5 = 4) and (n mod 6 = 5);

writeln(‘Искомое целое число ‘, n)

Пример 11. Числа, одинаково читающиеся и слева направо, и справа налево, называются палиндромами. Например, числа 42324 или 1331 — палиндромы. Составьте программу, которая будет находить числа — палиндромы из заданного промежутка.

Логика составления программы такова.

Переставить цифры в числе и сравнить полученное число с заданным.

Раньше уже составлялась программа перестановки цифр числа, которая была выполнена с помощью цикла с предусловием

Как будет построена часть программы о перестановки цифр с помощью цикла

Пусть заданное число a, тогда введем еще одну переменную b, которой будет присвоено значение переменной a (для чего это делается вы узнаете позже): b := a;

Заведем еще одну переменную a1 для нового числа, в котором цифры уже будут переставлены.

Первоначальное значение этой переменной — ноль: a1 := 0;

Почему значение этой переменной равно нулю станет ясно из программы.

Далее организуем цикл repeat, в котором будет происходить перестановка цифр числа b:

a1 := a1*10 + b mod 10;

Итак, в цикле, также как и в цикле while . do . отделяется последняя цифра:

b mod 10; (например, 343 mod 10 = 3); переменной a1 присваивается значение:

a1 := a1*10 + b mod 10; 0 * 10 + 3 =3;

«отбрасывается» последняя цифра заданного числа с помощью операции целочисленного деления:

b := b div 10; 343 div 10 = 34;

проверяется условие: b = 0, 34 = 0, условие не выполняется, значит цикл продолжается.

Отделяется последняя цифра уже нового числа:

b mod 10 = 34 mod 10;

новое число a1, уже равное 3, умножается на 10 и к результату прибавляется следующая цифра — 4:

Читайте также:
Все оперативная память 4 gb достаточно современные игры и программы не будут

a1 := a1*10 + b mod 10;

«отбрасывается» последняя цифра числа b:

b := b div 10 ; 34 div 10 = 3;

проверяется условие: b = 0, 3 = 0; условие не выполняется, значит цикл продолжается.

Отделяется последняя цифра числа:

b mod 10 ; 3 mod 10 = 3;

формируется новое число:

a1 := a1*10 + b mod 10 ; 34 * 10 + 3 = 343;

«отбрасывается» последняя цифра числа и получается новое число:

b := b div 10 ; 3 div 10 = 0;

проверяется условие: b = 0, 0 = 0; условие выполняется, значит цикл заканчивается.

Теперь становится ясно, почему введена другая переменная b для заданного числа, ее значение в цикле меняется от начального до нуля и, чтобы сохранить заданное число в переменной a, и вводится, так сказать, «рабочая» переменная — b.

После окончания цикла перестановки цифр числа, сравнивается первоначальное число, которое «сохранилось» в переменной a и число, которое получилось после перестановки цифр и «накопилось» в переменной a1.

Если a = a1, тогда значение a выдается на экран, так как это число является палиндромом.

Далее, значение a увеличивается на 1, т. е. берется для рассмотрения следующее по порядку натуральное число и снова продолжается внешний цикл. Цифры числа переставляются, полученное новое число после перестановки цифр — a1, сравнивается с первоначальным a и так далее.

Внешний цикл заканчивается, когда значение a становится равным правой границе интервала — n.

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru