Жив колись мудрий слуга, який урятував життя принцу. Король пообіцяв дати йому все, що той зможе забажати. Знаючи, що король любить шахи, слуга попросив зерна пшениці. Одне зерно на першій клітинці шахівниці, а на кожній наступній кількість зерен подвоюється.
Обчисліть кількість зерен пшениці на шахівниці.
Шахівниця має 64 клітинки. На клітинці 1 лежить одне зерно, на клітинці 2 лежать два зерна, на клітинці 3 лежать чотири зерна, і так далі, щоразу кількість подвоюється.
Напишіть код, який обчислює:
У Euphoria atom може зберігати число будь-якого виду, а його підтип integer призначений для цілих чисел.
Цю вправу можна розвʼязати мовами, схожими на C, повертаючи беззнакове 64-бітне ціле число.
Однак цілі числа в Euphoria є знаковими й на один біт менші за машинне слово, тож для цієї вправи вони замалі, тоді як atom може зберігати більші цілі числа з потрібною точністю у 64 біти.
32-бітна версія Euphoria й досі існує, щоб застарілі застосунки могли й надалі використовувати наперед зібрані 32-бітні dll/so, коли 64-бітної версії немає, або ж обгортка для них сповнена жорстко закодованих 32-бітних зсувів. Ця версія цілком непридатна для розвʼязання цього завдання, оскільки такі atom мають лише 53 біти точності. Якщо в нас виникають труднощі з розвʼязанням цієї вправи локально, переконаймося, що ми використовуємо 64-бітну версію Euphoria.