snab54
?>

Почему в качестве количественной меры энтропии и информации выбрана не функция вероятности, а ее логарифм?

Информатика

Ответы

glebovaludok
PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018Внимание! Если программа не работает, обновите версию!

begin

 var R := SeqRandomReal(ReadInteger('n='), -50, 50)

     .Select(t -> Round(t, 2)).ToArray;

 R.Println;

 var imin := R.IndexMin;

 var Q := R.Select(t -> t * R[imin]).ToArray;

 Q.Println; // если надо

 R[imin] := Q.Average;

 R.Println

end.

Пример

n= 7

30.94 -31.83 41.85 -42.56 34.33 19.38 1.88

-1316.8064 1354.6848 -1781.136 1811.3536 -1461.0848 -824.8128 -80.0128

30.94 -31.83 41.85 -328.2592 34.33 19.38 1.88

Вячеславович-Дмитрий1694
Алгоритм решения

Предположим, что первое введённое число - максимальное. Тогда в ans мы будем хранить 1, если первое число не меньше удвоенной суммы второго и третьего, и 0, если меньше.

Проверим - если второе число больше первого, мы запомним, что максимальное число у нас второе и пересчитаем ответ: 1, если второе число не меньше удвоенной суммы первого и третьего, 0 иначе.

Точно так же проверим третье число: если оно больше нашего максимального, обновим его и ответ.

После этого мы выведем "YES", если в ans хранится 1, "NO" иначе.


Код

#include <bits/stdc++.h>

using namespace std;

int main() {

   int a, b, c;

   cin >> a >> b >> c;

   int mx = a;

   int ans = (a >= (b + c) * 2 ? 1 : 0);

   if (b > mx) {

       mx = b;

       ans = (b >= (a + c) * 2 ? 1 : 0);

   }

   if (c > mx) {

       mx = c;

       ans = (c >= (a + b) * 2 ? 1 : 0);

   }

   cout << (ans == 1 ? "YES" : "NO") << endl;

   return 0;

}


Другие варианты1) int + тернарный оператор -> bool

#include <bits/stdc++.h>

using namespace std;

int main() {

   int a, b, c;

   cin >> a >> b >> c;

   int mx = a;

   bool ans = (a >= (b + c) * 2);

   if (b > mx) {

       mx = b;

       ans = (b >= (a + c) * 2);

   }

   if (c > mx) {

       mx = c;

       ans = (c >= (a + b) * 2);

   }

   cout << (ans ? "YES" : "NO") << endl;

   return 0;

}


2) string ans

#include <bits/stdc++.h>

using namespace std;

int main() {

   int a, b, c;

   cin >> a >> b >> c;

   int mx = a;

   string ans = (a >= (b + c) * 2 ? "YES" : "NO");

   if (b > mx) {

       mx = b;

       ans = (b >= (a + c) * 2 ? "YES" : "NO");

   }

   if (c > mx) {

       mx = c;

       ans = (c >= (a + b) * 2 ? "YES" : "NO");

   }

   cout << ans << endl;

   return 0;

}

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Почему в качестве количественной меры энтропии и информации выбрана не функция вероятности, а ее логарифм?
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Takhmina-Komarova1415
mishapavlov9
Chistov9721209
natura-domA90
Larisaodinets5
rublevaoe392
svetegal
romashka17-90
fashbymsk
aleksey270593
udalova-yelena
kristinagaspa62
irinabaranova2760
zanthia94
zanthia94