Машинная точность

Упражнения

A: a + b == c

Даны три действительных числа: a, b, c. Проверьте, выполняется ли равенство a+b=c. Если равенство выполняется, выведите YES, если не выполняется, выведите NO.

Числа a, b, c – действительные, положительные, не превосходят 10 и заданы не более, чем с 7 знаками после точки.

Ввод Вывод
2 3 7
NO
0.1 0.2 0.3
YES

B: Утренняя пробежка - 1

Подобную задачу вы решали полтора года назад...

В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 70% от предыдущего значения. По данному числу y определите номер дня, на который пробег спортсмена составит не менее y километров.

На вход программа получает два числа x и y. Числа положительные, действительные, не превосходят 1000, заданы с точностью до шести знаков после запятой.

Программа должна вывести единственное целое число.

Ввод Вывод
10 30
4

C: Утренняя пробежка - 2

И такая задача решалась...

В первый день спортсмент пробежал x километров, а затем он каждый день увеличивал пробег на 70% от предыдущего значения.

По данному числу y определите номер дня, на который суммарный пробег спортсмена составит не менее y километров.

На вход программа получает два числа x и y. Числа положительные, действительные, не превосходят 1000, заданы с точностью до шести знаков после запятой.

Программа должна вывести единственное целое число.

Ввод Вывод
10 100
4

D: Диета

В некоторой сверхсекретной лаборатории изучаются физические возможности животных. Любой живой организм нуждается в трех компонентах пищи –белках, жирах и углеводах. Известен набор продуктов, имеющийся в распоряжении лаборатории и меню животных – сколько единиц каждого продукта они получают. Известно также, сколько белков, жиров и углеводов необходимо для нормальной жизнедеятельности животного. Необходимо определить, получает ли животное достаточное количество питательных веществ.

Известно, что животному требуется в сутки X белков, Y жиров и Z углеводов. Известно также, что всего животное получает в сутки N продуктов питания, и для каждого из них известны Ai, Bi, Ci и Qi – соответственно энергетическая ценность единицы продукта в белках, жирах и углеводах и количество единиц этого продукта. Все числа – действительные, заданные с точностью до 5 знаков после запятой.

На первой строке входных данных записаны числа X, Y и Z. На второй строке записано число N≤25000. Далее на N строках записаны соответственно Ai, Bi, Ci и Qi.

Выведите YES, если данный пищевой рацион является достаточным по всем параметрам и NO в противном случае.

Ввод Вывод
1.0 1.0 1.0
3
1 0 0 1
0 0.5 0 2
0 0 0.25 4
YES

E: Машинное эпсилон

Напомним, что машинным эпсилоном называется такое наименьшее положительное число \(\varepsilon\), представимое в данном типе, что \(1+\varepsilon\neq1\). Значение машинного эпсилон зависит от типа данных, используемого для представления действительных чисел. Например, для типа float машинное эпсилон равно \(2^{-23}\).

Напишите программу, которая вычисляет машинное эпсилон для типов данных одинарной, двойной и расширенной точности. Решение не должно использовать какие-либо специальные знания о формате хранения действительного числа (например, о размере мантиссы числа.

Входные данные в этой задаче отсутствуют. Программа выводит три действительных числа в формате с плавающей точкой: значения машинного эпсилона для чисел одинарной, двойной и расширенной точности.

Проверка будет осуществляться путем сравнением ответов с правильными с относительной погрешностью 1%.

Пример

Вывод в данном примере содержит неверные ответы, верные ответы должны быть другими.

Ввод Вывод
 
1.234e-7
2.345e-16
3.456e-20

F: Наименьшее положительное число

В каждом из действительных типов есть наименьшее положительное представимое число. Например, для типа float это число равно \(2^{-149}\).

Напишите программу, которая вычисляет наименьшее представимое положительное число одинарной, двойной и расширенной точности. Решение не должно использовать какие-либо специальные знания о формате хранения действительного числа (например, о размере мантиссы числа.

Входные данные в этой задаче отсутствуют. Программа выводит три действительных числа в формате с плавающей точкой: ответы для чисел одинарной, двойной и расширенной точности.

G: Наибольшее целое представимое число

В каждом из действительных типов есть такое положительное целое число \(M\), что все целые положительные числа, не превосходящие \(M\) представимы в этом типе, а число \(M+1\) уже непредставимо. Например, для типа float это значение равно 224=16777216, число 16777217 в типе float непредставимо.

Выведите три таких целых числа для типов данных одинарной, двойной и расширенной точности.

H: Наибольшее представимое число

В каждом из действительных типов данных есть наибольшее положительное число, представимое в этом типе. Например, для типа float это число равно \(2^{128}-2^{104}\).

Выведите три таких целых числа для типов данных одинарной, двойной и расширенной точности.

I: Специальные числа

Используя только арифметические операции с типом double получите константы 0, -0, inf, -inf, nan, -nan и выведите их на экран.

Ввод Вывод
 
0
-0
inf
-inf
nan
-nan