Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.math.BigInteger;
- public class Chess {
- public static void main(String[] args) {
- // штош... по условию у нас есть доска 8 x 8 клеток (64 всего)
- // с первого по последний кол-во зёрнышек на каждой клетке
- // увеличивали в 2 раза начиная с 1
- // будем использовать геометрическую прогрессию
- // для оптимизации вычислений
- int firstNumber = 1; // первое число прогрессии
- int quantifier = 2; // знаменатель прогрессии
- int indexFirst = 0; // индекс первого числа
- int indexLast = 63; // индекс последнего числа
- // да, клеток на доске 64, но, т.к. первое число должно быть
- // равно 1, то начинать отсчёт нужно с 0, т.к. 1 x 2^0 = 1,
- // а уже далее значения будут умножаться на 2 каждый раз
- // упакуем знаменатель в BigInteger, т.к. далее часто используется
- BigInteger q = BigInteger.valueOf(quantifier);
- // найдём первое и последнее числа в прогрессии с
- // использованием BigInteger, т.к. далее мы будем
- // работать с очень большими числами, чьи значения
- // не вместятся ни в один обычный тип данных
- // n2 = n1 * q^63
- BigInteger n1 = BigInteger.valueOf(firstNumber); // = 1
- BigInteger n2 = n1.multiply(q.pow(indexLast)); // = 1 x 2^63
- // по формуле из учебника матеши 9-го класса найдём
- // сумму нужных членов геометрической прогрессии
- // sum = (n2 * q - n1) / (q - 1)
- BigInteger sum = n2.multiply(q).subtract(n1).divide(q.subtract(BigInteger.ONE));
- // выведем результат
- System.out.println("Первый член прогрессии = " + n1);
- System.out.println("Последний член прогрессии = " + n2);
- System.out.println("Общая сумма = " + sum);
- }
- }
Add Comment
Please, Sign In to add comment