Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Найти основание сс в которой записано число


Автор: АП 26.11.2004, 00:11
Даны натуральные числа n, m, неотрицательные целые числа a[m], a[m-1] a[0]такие, что a[m]a[m-1]a[0]- запись n в некоторой системе счисления (среди а[m] могут быть и числа, большие девяти, - это будет означать, что основание системы счисления заведомо больше десяти). Требуется определить основание использованной системы счисления.

у кого какие идеи?

Автор: sergejzr 26.11.2004, 00:32
Уже поздно, возможно будет гон smile Но прикинем...

у тебя число a[m]*x^m +a[m-1]*x^m-1+...+a[1]*x+a[0] = n
отс`да наверное и плясать smile

Автор: АП 26.11.2004, 00:39
а у нас в 2:42

это нужно х пролистывать ну от 2 или от маскимального а[m] до , какие, там системы счисленя бывают, 2..10+'a'..'z'
и с n сравниваь


Автор: sergejzr 26.11.2004, 00:40
Начать можем с
a[m]*x^m +a[m-1]*x^m-1+...+a[1]*x = n - a[0]
А потом корни полинома ищем.
Хотя чего-то крутовато кажется. Может быть проще можно решить..

Автор: Guest 26.11.2004, 00:47
Ладно, как говорится,
"Утро вечера мудрёнее"

Еще подумаю,

Да еще и блок-схему составить надо, какая гадость, с 6 класса их в глаза не видел.

Автор: sergejzr 26.11.2004, 00:53
Если подбором, то вообще не проблема smile от 2 и до максимального а[] подставлять х в формулу smile
Хтото типа
Код

y=max(a);
for(x=2;x<y;x++)
if(a[m]*x^m +a[m-1]*x^m-1+...+a[1]*x+a[0] ==n)
{
printf("Base: %l",x);
}

Автор: Akina 26.11.2004, 13:55
если основание = k, то n больше k в степени m и меньше k в степени m+1. Решение архиэлементарное. Можно еще проще - k=Int((n/(a[m]))^(1/m))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)