ПАлиндромом.
var m:integer; n,j,k:longint;
begin
readln(n); k:=n; m:=0; j:=0;
repeat j:=k mod 10+j*10; k:=k div 10; inc(m) until k=0;
writeln('Digits:',m,', Backwards:',j,', Palindrom:',j=n)
end.
Другие языки программирования и технологии
дано натуральное число N. Определить является ли оно полиндромом. Паскаль
Определил, не является
Эх, гулять так гулять! Проверим число на "палиндромность" в разных системах счисления:
PROGRAM Palindrom;
TYPE
pDigit = ^tDigit;
tDigit = record
Value :Integer;
Prev : pDigit;
Next : pDigit;
end;
VAR
N, base, tmp, Digit :Integer;
firstDigit, lastDigit, digitsEntry :pDigit;
isPalindrom :Boolean;
BEGIN
{задаем проверяемое число}
N := 12321;
FOR base := 2 TO N-1 DO
BEGIN
tmp := N;
digitsEntry := NIL;
{разбираем число на двусвязный список цифр}
WHILE(tmp <> 0) DO
BEGIN
Digit := tmp MOD base;
IF (digitsEntry = NIL) THEN
BEGIN
new(firstDigit);
firstDigit^.Prev := NIL;
firstDigit^.Next := NIL;
lastDigit := firstDigit;
digitsEntry := firstDigit;
END
ELSE
BEGIN
new(lastDigit^.Next);
lastDigit^.Next^.Prev := lastDigit;
lastDigit := lastDigit^.Next;
lastDigit^.Next := NIL;
END;
lastDigit^.Value := Digit;
tmp := (tmp - Digit) DIV base;
END;
{проверяем, является ли список цифр палиндромом}
isPalindrom := True;
WHILE (firstDigit <> NIL) DO
BEGIN
isPalindrom := isPalindrom AND (firstDigit^.Value = lastDigit^.Value);
firstDigit := firstDigit^.Next;
lastDigit := lastDigit^.Prev;
END;
{если список цифр - палиндром, печатаем его}
IF (isPalindrom) THEN
BEGIN
Write(N, ' is palindrom in base ', base, ':');
WriteLn;
firstDigit := digitsEntry;
WHILE (firstDigit <> NIL) DO
BEGIN
Write(firstDigit^.Value, ' ');
firstDigit := firstDigit^.Next;
END;
WriteLn;
END;
{очищаем список цифр}
WHILE (digitsEntry <> NIL) DO
BEGIN
firstDigit := digitsEntry^.Next;
dispose(digitsEntry);
digitsEntry := firstDigit;
END;
firstDigit := NIL;
lastDigit := NIL;
END;
{приостанавливаем выполнение программы до выхода}
WriteLn('Press Enter');
ReadLn;
END.
PROGRAM Palindrom;
TYPE
pDigit = ^tDigit;
tDigit = record
Value :Integer;
Prev : pDigit;
Next : pDigit;
end;
VAR
N, base, tmp, Digit :Integer;
firstDigit, lastDigit, digitsEntry :pDigit;
isPalindrom :Boolean;
BEGIN
{задаем проверяемое число}
N := 12321;
FOR base := 2 TO N-1 DO
BEGIN
tmp := N;
digitsEntry := NIL;
{разбираем число на двусвязный список цифр}
WHILE(tmp <> 0) DO
BEGIN
Digit := tmp MOD base;
IF (digitsEntry = NIL) THEN
BEGIN
new(firstDigit);
firstDigit^.Prev := NIL;
firstDigit^.Next := NIL;
lastDigit := firstDigit;
digitsEntry := firstDigit;
END
ELSE
BEGIN
new(lastDigit^.Next);
lastDigit^.Next^.Prev := lastDigit;
lastDigit := lastDigit^.Next;
lastDigit^.Next := NIL;
END;
lastDigit^.Value := Digit;
tmp := (tmp - Digit) DIV base;
END;
{проверяем, является ли список цифр палиндромом}
isPalindrom := True;
WHILE (firstDigit <> NIL) DO
BEGIN
isPalindrom := isPalindrom AND (firstDigit^.Value = lastDigit^.Value);
firstDigit := firstDigit^.Next;
lastDigit := lastDigit^.Prev;
END;
{если список цифр - палиндром, печатаем его}
IF (isPalindrom) THEN
BEGIN
Write(N, ' is palindrom in base ', base, ':');
WriteLn;
firstDigit := digitsEntry;
WHILE (firstDigit <> NIL) DO
BEGIN
Write(firstDigit^.Value, ' ');
firstDigit := firstDigit^.Next;
END;
WriteLn;
END;
{очищаем список цифр}
WHILE (digitsEntry <> NIL) DO
BEGIN
firstDigit := digitsEntry^.Next;
dispose(digitsEntry);
digitsEntry := firstDigit;
END;
firstDigit := NIL;
lastDigit := NIL;
END;
{приостанавливаем выполнение программы до выхода}
WriteLn('Press Enter');
ReadLn;
END.
у меня является. что делать будем?
Похожие вопросы
- Помогите пожалуйста!Паскаль. Дано натуральное число N. Получить наименьшее число вида 2(m в степени), превосходящее N.
- Pascal: Дано 3-значное число N.Определить,являются ли числа,из которых оно состоит членами геометрической прогрессии
- Дано натуральное число n и вещественная матрица размера n X 9 . Плиз помогите(
- как решить через abc pascal задачу "Дано натуральное число n. Получить все простые делители этого числа"
- Дано натуральное число n. Найти и вывести все числа в интервале от 1 до n -1, у которых произведение всех цифр совпадает
- Помогите плз решение задачи по Паскулю!!! Дано натуральное число и определить яв-ся ли оно простым.
- Помогите написать программу Дано натуральное число n. Вычислить сумму всех k(k+1), k меняется от 1 до n.
- В некоторой стране используются денежные купюры достоинством в 1, 2, 4, 8, 16, 32 и 64. дано натуральное число N. Как на
- Дано натуральное число N. Напечатать все его делители.
- Помогите написать программу. Дано натуральное 5-значное число n.Определить равны ли сумма и произведение его цифр.