Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Пайтон,задание про племя Майя и их систему счета

Рома Жучков Знаток (251), открыт 2 недели назад
нужно решить эту задачу на пайтоне,но я вообще хз каким образом.Помогите с ней разобраться




Майя – цивилизация Центральной Америки, известная благодаря своей письменности, искусству, архитектуре, математической и астрономической системам. Расцвет их цивилизации приходится на первое тысячелетие нашей эры. Хотя тягловые животные и колесо им были неизвестны, Майя достигли больших успехов в сельском хозяйстве, архитектуре и гончарном производстве. Но более всего удивляют их достижения в астрономии и математике. Например, Майя определили, что солнечный год равен 365.242 дней (современные измерения – 365.242198), лунный цикл – 29.5302 дней (современные измерения – 29.53059). Такие точные астрономические измерения не возможны без развитой системы счета.

В этой задаче мы познакомимся с системой счисления Майя. Жрецы майя и астрономы использовали систему счисления с основанием 20. Их система оперировала понятиями цифры и нуль, что весьма необычно для того времени. Оба эти понятия были совершенно неизвестны населению средневековой Европы. Первые двадцать цифр двадцатеричной системы представляются точками и тире в соответствии со следующей таблицей:

Нуль изображался в виде стилизованной раковины от устрицы. Числа, состоящие из нескольких цифр (т.е. числа больше 19) записывались вертикально снизу вверх (от младших разрядов к старшим). Например, число 79 запишется как

Очень четко прослеживается влияние календарной системы Майя, так как начальным числом третьего порядка является не 400 (20x20), как это ожидается, а 360, т.е. во втором разряде используются только 18 цифр. Все остальные разряды используют все 20 цифр.

Таким образом, число 13495 (1x7200+17x360+8x20+15) запишется следующим образом

Напишите программу для перевода чисел из системы счисления Майя в десятичную.

Формат ввода
Во входном файле записано одно число в системе счисления Майя. Первая строка содержит число N (1 ≤ N ≤ 14) – количество разрядов в записи числа. В каждой из последующих N строк с помощью точек (.) и дефисов (-) записаны цифры. Для обозначения нуля используется заглавная буква S.

Формат вывода
В выходной файл выведите число в десятичной системе счисления.

Пример 1
Ввод Вывод
1 2
..

Пример 2
Ввод Вывод
2 60
...
S
Пример 3
Ввод Вывод
4 13495
.
..---
...-
---
1 ответ
Cogni Просветленный (40132) 2 недели назад
 def get_digit_value(s): 
if s == 'S':
return 0
else:
return s.count('-') * 5 + s.count('.')

def main():
import sys

# Чтение входных данных
lines = sys.stdin.read().splitlines()
N = int(lines[0])
digits_str = lines[1:N+1]

# Преобразование строковых представлений цифр в числовые значения
digits = [get_digit_value(s) for s in digits_str]

# Вычисление позиционных значений
place_values = [1]
for i in range(1, N):
if i == 2:
place_values.append(18 * place_values[i-1])
else:
place_values.append(20 * place_values[i-1])

# Поскольку первые цифры самые старшие, нужно умножать их на соответствующие разряды
total = 0
for i in range(N):
# Цифра i умножается на place_values[N-1-i]
total += digits[i] * place_values[N-1-i]

print(total)

if __name__ == "__main__":
main()
Похожие вопросы