Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод десятичного числа в двоичную, троичную... Перевод в разные системы счисления 
:(
    Опции темы
zetxi815eb
Дата 26.1.2007, 23:54 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 17.1.2007

Репутация: нет
Всего: нет



Вот условье самой задачи:
Задача A. "Палиндром".
Входной файл input.txt
Выходной файл output.txt
Ограничение по времени 1 секунда на тест
Ограничение по памяти  4096К байт
Натуральное число называется палиндромом, если оно читается слева направо и справа налево одинаково. Известно, что для любого натурального числа можно подобрать такую систему счисления, в которой это число является палиндромом. Например, число 15 записывается в двоичной системе счисления как 1111 и является палиндромом.
Вход
В первой строке входного файла записано натуральное число N (N < 2^31). 
Выход
Запишите в выходной файл наименьшее основание системы счисления, в которой N является палиндромом.
Примеры входа и выхода
input.txt      output.txt
2        3
input.txt    output.txt
11        10

В Паскале мне раньше не приходилось переводить числа из одной системы в другую.

Подскажите по какой формуле это делать? Какой тип использовать?? Ведь N имеет тип longint.
Помогуте, плиз, желательно с коментариями...мне не столько важно решить эту задачу... я просто хочу разобраться в методе её решения.
PM MAIL   Вверх
Magister Y0da
Дата 27.1.2007, 01:26 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зелёненький
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 30.11.2004

Репутация: нет
Всего: 2



где-то на форуме SoWa вроде выкладывал свой модуль перевода чисел из любой системысчисления в любую

Поищи  smile 
--------------------
PM MAIL ICQ   Вверх
zetxi815eb
Дата 27.1.2007, 03:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 17.1.2007

Репутация: нет
Всего: нет



Magister Y0da, а можешь дать ссылку на этот форум?
PM MAIL   Вверх
volvo877
Дата 27.1.2007, 04:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



zetxi815eb,

FAQ тебе в помощь: http://vingrad.ru/DELPHI-DLP-001153
(правда, решение на Дельфях, но алгоритм-то остается... Можешь еще в поиске по разделу Паскаль ввести слово "счисления" - получишь ссылки на несколько интересных тем... Ну, и ссылки в самом низу этой вот страницы, которую ты сейчас читаешь  smile )
PM MAIL   Вверх
zetxi815eb
Дата 27.1.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 17.1.2007

Репутация: нет
Всего: нет



Вот...нашёл я наконец эту функцию:
Код

uses crt;
function FromDec(n, radix:longint):string;
var    s: String;
const    digit: string[16]='0123456789ABCDEF';
begin
s:='';
repeat
s:=digit[(n mod radix)+1]+s;
writeln ('s:=',s);
n:=n div radix;
until n=0;
FromDec:=s;
end;


var a,b,c:longint;
    t:string;
begin
clrscr;
a:=999999; b:=2;
t:=FromDec(a,b);
writeln (t);
readkey;
end.


Люди...вот только я не пойму как работает 8-я строчка...можете обьяснить?
PM MAIL   Вверх
volvo877
Дата 27.1.2007, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Код
s:=digit[(n mod radix)+1]+s;

Эта? smile

сначала находится последняя цифра числа (это n mod radixостаток от деления на основание с/с), но поскольку нумерация символов в строке в Турбо Паскале начинается с 1, а не с 0, а нам фактически нужна позиция символа в строке, представляющего заданное число в системе счисления с основанием radix, то мы к этой самой цифре прибавляем 1...

Дальше - строка преобразуется от конца числа к началу, поэтому, тот символ в новой с/с, который мы вытащили из строки (вот так: digit[(n mod radix)+1]), надо "прилепить" к старой строке-результату спереди, что и делается - сначала символ, потом строка. Результат опять же запоминается в той же строке...

Ну, и в 10-ой строке мы делим число нацело на основание с/с, чем "убираем" последнюю цифру, и процесс продолжается вновь... Пока число не превратится в 0...
PM MAIL   Вверх
Letov
Дата 31.3.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 22.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 4



Перевод дробного числа D (т.е любого) в p-ичную систему происходит по следующему алгоритму:
1.Умножить D на p;
2.Целую часть произведения представить соответствующей цифрой p-ичного представления;
3.Умножать D на p до тех пор, пока не будет достигнута требуемая точность (получится p-ичное число с k дробными разрядами) или дробная часть обратится в ноль.


--------------------
Не бывает плохих языков программирования. Бывают плохие программисты...

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

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

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0753 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.