При регистрации в компьютерной системе каждому пользователю выдается пароль, состоящий из 19 символов и содержащий только символы Ф, Ы, В, А, П, Р, О, Л, Д. Каждый такой пароль в системе записывается минимально возможным и одинаковым целым количеством байт (при этом используют посимвольное кодирование и все символы кодируются одинаковым и минимально возможным количеством бит).
Определи объем памяти, отводимый системой для записи 55 паролей.
1)76 байт
2)550 бит
3) 600 байт
4)550 байт
#include <iostream>
#include <cmath>
using namespace std;
signed main()
{
setlocale(LC_ALL, "Rus");
int N;
bool haveZero = false, haveOne = false;
cin >> N;
N = abs(N);
while(N>0){
if(N % 10 == 0)
haveZero = true;
if(N % 10 == 1)
haveOne = true;
N /= 10;
}
cout << "Наличие нуля: " << boolalpha << haveZero << endl;
cout << "Наличие единицы в числе: " << boolalpha << haveOne << endl;
return 0;
}
program balet;
uses
crt;
var
k, n, pc: integer;
var
pd: real;
begin
readln(n);
readln(k);
pd := (n - 3 * k) / 2;
pc := trunc(pd);
if (pd > pc) then
pc := pc + 1 ;
writeln(pc);
readln;
end.
Пояснения:
pc - целое число принятых
pd - дробное число принятых
Так как может возникнуть ситуация, что ровно треть мальчиков от всех учеников сделать не получиться, то используем приём со сравнением числа с дробной частью и без дробной части в числе. Если дробная часть есть, то прибавляем еще одного принятого, чтобы было чуть больше трети от всех.
Пример:
n=59
k=10
pd=14,5
pc=trunc(14,5)=14
{функция trunc полностью отбрасывает дробную часть (не округляет!)}
pd>pc?
Да!
Значит
pc=14+1=15
Считаем.
Если бы мы не добавили к pc единицу, то получилось бы:
А это немного не треть...
А так как мы добавили единицу, то получилось:
То что нам надо!