Опубликован: 27.09.2006 | Уровень: для всех | Доступ: свободно | ВУЗ: Московский государственный индустриальный университет
Дополнительный материал 1:

Все задачи курса

< Лекция 13 || Дополнительный материал 1: 1234567

Задачи на особенности представления чисел в ЭВМ

Задача 7.78. Предъявите целое число x такое, что x + 1 < x.

Задача 7.79. Предъявите действительное (типа double ) число x такое, что x + 1 = x, а (x\cdot 2) / 2 \ne x. Воспользуйтесь тем, что класс java.lang.Double определяет константу MAX_VALUE.

Задача 7.80. Предъявите такие действительные (типа double ) числа a, b и c такие, что a+(b+c) \ne (a+b)+c.

Задача 7.81. Явно перечислите и изобразите на числовой прямой все точки множества \mathbb{R}_M, сделав следующие допущения: числа хранятся в нормализованной форме с плавающей точкой; для хранения как мантиссы, так и порядка числа отводится по три бита (из которых в обоих случаях один является знаковым); никаких особых значений нет.

Задача 7.82. Предъявите действительное (типа double ) число x такое, что (x /2) \cdot 2 \ne x. Воспользуйтесь тем, что класс java.lang.Double определяет константу MIN_VALUE.

Задача 7.83. Определите (приближенно) MACHEPS (машинное эпсилон) для типов double и float. Машинным эпсилоном называется наибольшее число x данного типа, удовлетворяющее соотношению 1+x=1.

Задача 7.84. Предъявите последовательность чисел (типа float ), при суммировании которой в прямом и обратном порядке результаты будут отличаться не менее, чем вдвое.

Задача 7.85. Напишите программу, вводящую действительные коэффициенты a, b и c квадратного уравнения a x^2 + b x + c = 0 с положительным дискриминантом, находящую оба корня этого уравнения достаточно точно во всех случаях.

Задачи на рекурсию и итерацию

Задача 7.86. Напишите рекурсивную программу, вычисляющую факториал введенного натурального числа.

Задача 7.87. Напишите рекурсивную программу, печатающую n -ое число Фибоначчи.

Задача 7.88. Напишите итерационную программу, вычисляющую факториал введенного натурального числа.

Задача 7.89. Напишите программу, печатающую n -ое число Фибоначчи, которая имела бы линейную сложность.

Задача 7.90. Напишите программу, печатающую n -ое число Фибоначчи, которая имела бы логарифмическую сложность.

Задача 7.91. Напишите программу, вычисляющую факториал введенного натурального числа, не использующую ни итерации, ни рекурсии (имеющую сложность \Theta(1) ).

Указание Воспользуйтесь тем, что факториал — очень быстро растущая функция, а множество \mathbb{Z}_M — ограничено, и поэтому любая программа, работающая с величинами типа int, способна вычислить факториал только очень небольших чисел.

Задача 7.92. Напишите программу, перемножающую два натуральных числа, которая не использует операции умножения.

Задача 7.93. Напишите программу, перемножающую два натуральных числа, которая не использует операции умножения, и имеет при этом логарифмическую сложность.

Указание Можете попробовать разобраться в программе, решающей задачу 5.5. В ней выполняется более сложное действие — квадратная матрица возводится в степень n за логарифмическое время.

Задача 7.94. Напишите программу, вводящую целое число a и натуральное n, вычисляющую и печатающую степень a^n без использования вызова функции возведения в степень.

Задача 7.95. Напишите программу (быстрое возведение в степень), возводящую целое число a в целую неотрицательную степень b без вызова функции возведения в степень с временной сложностью \Theta(\log b).

Задача 7.96. Напишите программу, печатающую сумму квадратов всех натуральных чисел от 1 до введенного натурального n, которая имела бы константную сложность, т.е. не использовала бы ни итерации, ни рекурсии.

Задача 7.97. Напишите программу, вводящую натуральное число, и печатающую Yes, если оно является простым и No иначе.

Задача 7.98. Напишите программу, печатающую n -ое простое число.

Задача 7.99. Напишите рекурсивную программу, печатающую биноминальный коэффициент C_n^k для целых n и k, где 0\leqslant k\leqslant n. Для неотрицательных n и k имеют место следующие соотношения: C_n^0 = C_n^n = 1, C_{n+1}^{k+1} = C_n^{k+1} + C_n^k.

Задача 7.100. Напишите программу, печатающую старшую цифру в десятичной записи введенного натурального числа.

Задача 7.101. Напишите программу, печатающую количество цифр в десятичной записи введенного натурального числа.

Задача 7.102. Напишите программу, печатающую десятичную запись введенного натурального числа, использующую только операции печати цифр от 0 до 9.

Задача 7.103. Напишите программу, печатающую количество натуральных решений неравенства x^2+y^2 < n для введенного натурального числа n.

Задача 7.104. Напишите программу, вводящую натуральное число R, и печатающую количество точек с целочисленными координатами внутри замкнутого шара радиуса R с центром в начале координат.

Задача 7.105. Напишите программу, вводящую целые коэффициенты многочлена пятой степени в порядке убывания его степеней, и печатающую последовательность коэффициентов его куба.

Задача 7.106. Напишите программу, вводящую натуральное число x, и печатающую наиболее близкую к \sqrt x простую дробь вида m/n со знаменателем n, не превосходящем 100.

Задача 7.107. Напишите программу, печатающую первые k пар простых чисел. Два числа a и b образуют пару простых чисел, если они оба простые и b=a+2.

Задача 7.108. Напишите программу, находящую сумму

\frac{1}{0!}+\frac{1}{1!}+\frac{1}{2!}+\ldots+\frac{1}{n!},
сложность которой была бы линейной.

Задача 7.109. Напишите программу, находящую наибольший общий делитель gcd(X,Y) двух натуральных чисел X и Y.

Задача 7.110. Напишите программу, печатающую квадраты всех целых чисел от нуля до введенного натурального n, не использующую операций умножения и имеющую линейную сложность.

Задача 7.111. Напишите программу, находящую количество счастливых билетов с шестизначными номерами. Билет называется счастливым, если сумма его первых трех цифр равна сумме трех последних.

< Лекция 13 || Дополнительный материал 1: 1234567
Анастасия Халудорова
Анастасия Халудорова
екатерина яковлева
екатерина яковлева