Интересная головоломка программирования:
Если целые числа от 1 до 999 999 999 написаны как слова, отсортированные в алфавитном порядке и конкатенированных, что это 51-миллиардная буква?
Если быть точным: если целые числа от 1 до 999 999 999 выражены словами (опуская пробелы, и, и пунктуация - см. примечание ниже для формата) и отсортировано в алфавитном порядке, чтобы первые шесть целые числа
- восемь
- восемнадцать
- eighteenmillion
- eighteenmillioneight
- eighteenmillioneighteen
- eighteenmillioneighteenthousand
а последнее -
- twothousandtwohundredtwo
затем чтение сверху вниз, слева справа, 28-я буква завершает написание целого числа "Eighteenmillion".
И еще 51 миллиардная буква написание целого числа. Который из, и какова сумма всех целые числа в эту точку?
Примечание. Например, 911,610,034 написано "Ninehundredelevenmillionsixhundredtenthousandthirtyfour"; Написано 500 000 000 "Fivehundredmillion"; 1,709 написано "Onethousandsevenhundrednine".
Я наткнулся на это в блоге программирования 'Occuallyally Sane' и не мог придумать аккуратный способ сделать это, автор из соответствующий пост говорит, что его первоначальная попытка через 1,5 ГБ памяти заработала через 10 минут, и он сделал это только до 20 000 000 ( "twentymillion" ).
Может ли любой думать о придумать поделиться с группой новым/умным подходом к этому?