MAYA - Numeral System of the Maya

no tags 

The Maya lived in Central America during the first millennium. In many regards, they consituted one of the most developed and most fascinating cultures of this epoch. Even though draught animals and the wheel were unknown to the Mayas, they excelled in the fields of weaving, architecture and pottery. But truely breath-taking were their achievements in the fields of astronomy and mathematics. Whilst Europe was trudging through the dark Middle Ages, the Maya determined the solar year to 365.242 days (modern-day measurement: 365.242198) and the lunar cycle to 29.5302 days (modern-day measurement: 29.53059). Such astonishingly precise findings were hardly possible without a powerful numeral system. In this task we will explore the Maya's numeral system.

Maya priests and astronomers used a numerical system to the base of 20. Unusual to their time, their system also included the concepts of digits and of the zero. Both concepts were completely unknown to the Europeans at this time. The first nineteen numbers of the vigesimal system were represented by dots and dashes according to the following table:

The zero was written down as a symbol resembling a shell. Multi-digit numbers (i.e. the numbers bigger than 19) were written in vertical arrangement, with the highest-value digit on top. For example, the number 79 was written as

As can be seen, the second digit possesses a value of 20.

Due to an interference of the two calendar systems of the Maya, the third digit did not hold the value 400 (20x20), as would be expected, but 360. All the following digits were again treated regularly, i.e. the fourth digit counted 7200 (360x20), the fifth 144000 (7200x20), and so on.

Hence, the number 13495 (=1x7200+17x360+8x20+15) was written as follows:

Write a program to convert Maya numbers to decimal numbers!


The input file contains a list of numbers written down in Maya fashion. Of course, dots are represented as points (.), and dashes are represented as hyphens (-). The zero digit, the shell symbol, is written as a capital letter S (S). Description of a Maya number starts with n - the number of the Maya digits. The following n lines contain one digit each. One digit is written from top to bottom using spaces as vertical separators.

One number will not have more than seven digits. Each two numbers are separated by a blank line. Input terminates with n = 0


Your program has to output the value of the number in the input file in the nowadays more common decimal system. One number per line.


Sample input:

... -
. - -

Sample output:

hide comments
Davit Safrastyan: 2016-12-10 19:37:59

Find the solution of this problem in xoptutorials.com/spoj.php

lt: 2016-11-15 16:35:33

It should be made clear that only third digit makes it 18 instead of 20 and not every third digit. It did cost me 1 WA. :(

satylogin: 2016-08-17 20:45:14

using long long gives wrong ans but using int gives correct, don't know why

shravinson: 2015-07-21 16:28:03

i have to use scanf 2 times to input a number
i.e. while(scanf("%d", &n)==1 && n)
i don't understand why is it working & got AC...??????

SangKuan: 2015-06-28 18:27:12

remember read a empty line after a number...it cost me 3 times

Srijan Chattopadhyay: 2015-05-12 13:42:29

Is the Time limit Really 3 sec ?? I did it in a few miliseconds and it still shows TLE

Subhashis Bhowmik: 2015-05-09 09:15:56

Getting WA, though the test cases worked.

Aswin Murugesh: 2013-09-07 09:22:05

For Languages like Python, Don't forget the "Blank line" after each test case

Added by:Michał Czuczman
Time limit:3s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: NODEJS PERL 6 VB.net
Resource:Swiss Olympiad in Informatics 2004