PDA

Просмотр полной версии : [Помогите!] Задача Инопланетянин


megbum
18.11.2012, 20:58
Во время эксперимента Накодиллы было случайно получено сообщение инопланетян,содержащее формулу вида A+B=C
Общественности стало интересно, какую же систему счисления используют инопланетяне.Так как внеземная цивилизация была достаточно развита, чтобы отправить межпланетное сообщение, накодилла предположил, что основание системы счисления довольно мало. Требуется написать программу, которая находит минимальное основание системы счисления , при котором данное равенство выполняется.
Формат ввода
В елинственной строке входных данных содержится три числа A,B,C.Числа состоят из цифр от 0 до 9 и заглавных латинских букв от A до Z
Формат вывода
Требуется вывести единственное число- искомое основание системы счисления.Если такой системы счисления не существует то вывести -1 Гарантируется что ответ не превышает 36

Пример

ввод 2 2 4 вывод 5
ввод 1A 2 20 вывод 12


Была на школьной олимпиаде, так и не решил(
Помогите какой алгоритм?

Sinyss
18.11.2012, 21:11
Да как бы все просто, ищем самую большую цифру, учитывая что цифры от 1 до Z.
То,есть 1,2,...,9, A,...,Z.
Система счисления будет полученная самая большая цифра +1.

megbum
18.11.2012, 22:06
Да как бы все просто, ищем самую большую цифру, учитывая что цифры от 1 до Z.
То,есть 1,2,...,9, A,...,Z.
Система счисления будет полученная самая большая цифра +1.
А как же тогда, 1A 2 20 там же 20 наибольшее и значит 20+1=21 , а вывод дан 12

Sinyss
18.11.2012, 23:58
А как же тогда, 1A 2 20 там же 20 наибольшее и значит 20+1=21 , а вывод дан 12
Цифра а не число, в данном случае это А, которая равна 10, но да я ошибся... Сейчас что то новое придумаю )
Для начала правило перевода из любой системы в десятичную: Допустим мы переводим число 123 в систему с основанием P. Алгоритм следующий:
( 1*P^2) + (2*P^1)+(3*P^1) ( где P^2 означает P во второй степени)
Надо добавить что система счисления как минимум на 1 больше наибольшей цифры любого из 3х чисел.
Решим для примера 1:
Наибольшая цифра - 4, значит сначала попробуем для основания 5, потом 6 и тд. до 36.
Пробуем для основания 5.
2+2=4 уравнение выполняется, останавливаемся.
(не демонстративно, на примере 2 смотрим).

Пример 2.
Минимальное возможное основание - 11, потому что максимальная цифра А(которая равна 10).
Проверяем для основания 11:
1А + 2 = 20 Переведем это в десятичную систему что проверить.
(1*11+A*1) + (2*1) = (2*11 + 0*1)
(11+10)+2 = 22+0
Итого:
21+2= 22.
Не равно, значит основание не правильное.
Для основания 12:
(1*12+А*1) + (2*1) = (2*12 + 0*1)
(12+10)+2= 24
22+2= 24
Равно, ответ найден.

Skrillex3
19.11.2012, 09:29
Была на школьной олимпиаде, так и не решил(
эм , а какой у тебя пол?

Sinyss
19.11.2012, 13:22
эм , а какой у тебя пол?
То есть то что он попал на олимпиаду по программированию без знаний что такое система счисления тебя не сильно интересует?

megbum
19.11.2012, 14:30
эм , а какой у тебя пол?
Я имел ввиду была задача на школьной олимпиаде.

То есть то что он попал на олимпиаду по программированию без знаний что такое система счисления тебя не сильно интересует?
Я только в 8 классе , а в школе информатику вообще очень плохо дают, на олимпиаде был первый раз , учусь сам.

Sinyss
19.11.2012, 14:37
А какие задачи ты решил?
Системы счисления были одной из 1х тем что мне давали, когда я еще в школе был...

Serpol(1)
19.11.2012, 23:09
Я имел ввиду была задача на школьной олимпиаде.


Я только в 8 классе , а в школе информатику вообще очень плохо дают, на олимпиаде был первый раз , учусь сам.

Нормально дают... Я сервак локальный поставил даже по подсказкам учителей. А СС не проходил ,но это легко,сам учил/bonk

Relli
19.11.2012, 23:27
Пф,у нас вообще нет информатики

Sinyss
20.11.2012, 00:27
Нормально дают... Я сервак локальный поставил даже по подсказкам учителей. А СС не проходил ,но это легко,сам учил
И который же? Сейчас в 90% случаев установка проходит примерно так: Установить-Далее-Далее-Готово.

Sinyss
23.11.2012, 11:52
Так пойдет?
Для начала у тебя будет на 1 меньше чем минимальное возможное основание, а во вторых это не правильный ответ...

Sinyss
23.11.2012, 14:05
уверен? а пробел вначале учитываешь? а посчитай)
и погоняй тесты и убедишься что я прав
Забыл что там нумерация с 1, но дело даже не в этом...
Я по коду вижу баги, проверь сам на этом примере:
ввод 1A 2 20 вывод 12

mad_cat
23.11.2012, 14:13
ну тогда как вариант накатать функцию перевод из любой системы в 10-ную и проверять в цикле

Sinyss
23.11.2012, 14:16
ну тогда как вариант накатать функцию перевод из любой системы в 10-ную и проверять в цикле
Что я и написал парой сообщений выше. И вы бы это знали если бы прочитали посты что я писал.
PS: а свои пред. ответы удалили потому что стыдно? =)