Формула Бине:

При работе с типом double имеет место быть некоторая погрешность. При больших числах относительная погрешность стремится к 0.
Код:
#include <iostream>#include <cmath>#define sqrt5 sqrt(5)#define (1 + sqrt5)/2#define n (1 - sqrt5)/2long long fibBinet(int n) { return (long long) round((pow(, n) - pow(n, n)) / sqrt5);}int main() { long long binet77 = fibBinet(77); std::cout << "fibBinet(77) = " << binet77 << " (5527939700884757)" << std::endl; std::cout << "A = " << abs(5527939700884757ll - binet77) << std::endl; std::cout << "B = " << 5527939700884757ll / binet77 << std::endl; return 0;}
20 человек
Объяснение:
Если всеми тремя языками владеют 3 человека, то
- Только Н и Ф (без А) одновременно владеют 5-3 = 2 человека
- Только А и Ф (без Н) одновременно владеют 10-3 = 7 человек
- Только А и Н (без Ф) одновременно владеют 8-3 = 5 человек
- Только А (без Н и Ф) владеют 28 - (3+5+7) = 13 человек
- Только Ф (без А и Н) владеют 42 - (2+3+7) = 30 человек
- Только Н (без Ф и А) владеют 30 - (2+3+5) = 20 человек
- Не владеет ни одним из языков 100 - (13+30+20+2+7+5+3) = 100 - 80 = 20 человек
ответ: 20 человек.