Диапазон записываемых температур равен:39 - 35 = 4 градусаПри записи с точностью 0,1 градус, число возможных значений температуры в этом диапазоне составляет:4 / 0,1 + 1 = 40 + 1 = 41 значениеЧтобы объяснить, почему так считается, возьмём пример попроще: диапазон 10 градусов (от нуля до 10 градусов), с точностью 5 градусов. При этом, наш диапазон нужно поделить на отрезки длиной в 5. Это и делается операцией деления: 10 / 5 = 2. То есть, будет два таких отрезка, и соответственно, две температуры на концах этих отрезков- это 5 и 10 градусов. Но, кроме этих двух точек- есть ещё одна точка- начало первого отрезка, температура 0 градусов. Вот, чтобы посчитать эту начальную точку, и нужно прибавить единицу. И, общее число возможных температур будет равно 10 / 5 + 1 = 3 (это температуры 0, 5 и 10 градусов)
Подберём число бит, достаточное для хранения 41 возможного значения:например, 4 бита достаточно для хранения
значений (то есть, нам не подойдёт, у нас значений больше)5<span>
бит - это </span>
<span>
значения (не подойдёт)6</span><span>
бит - это </span>
<span>
значения (хватит для хранения наших данных)Ответ: требуется зарезервировать 6 бит.Если вдруг вы уже проходили логарифмы, то количество бит для хранения наших данных можно посчитать так:
</span>
![\log_2 41 \approx 5,357552](https://tex.z-dn.net/?f=%5Clog_2+41+%5Capprox+5%2C357552)
Далее, если бы в результате получилось бы целое число, это бы и было нужное количество бит для хранения.
А для дробного- округляем с избытком (т.е. в большую сторону) до ближайшего целого. Получится шесть бит.
Если на вашем калькуляторе не посчитать логарифм по основанию два, то можно воспользоваться формулой замены основания логарифма, что позволит посчитать через десятичный или натуральный логарифм:
![\log_2 41 = \lg 41 / \lg 2 = \ln 41 / \ln 2 \approx 5,357552](https://tex.z-dn.net/?f=%5Clog_2+41+%3D+%5Clg+41+%2F+%5Clg+2+%3D+%5Cln+41+%2F+%5Cln+2+%5Capprox+5%2C357552)
#include <iostream>
#include <sstream>
using namespace std;
int ispal(int x)
{
stringstream a;
a<<x;
string s =a.str();
string t="";
for(int i=s.length()-1;i>=0;i--)
t+=s[i];
for(int i=0;i<s.length();i++)
if(s[i]!=t[i])
return 0;
return 1;
}
int main()
{
int n;
cin>>n;
while(!ispal(n))
n++;
cout<<n;
return 0;
}
var
i:integer;
begin
for i:=60 to 70 do write (chr(i),' ');
readln;
end.