1. Отметим, что приписывание к двоичному числу двух младших разрядов предполагает предварительный сдвиг этого числа влево на два разряда (что равносильно умножению на 2²=4), а затем установку двух младших разрядов в соответствующие приписываемым битам значения. Следовательно, можно записать, что 4N+a>43, где a - число, образованное приписываемыми справа битами, которое не может превышать 11(2)=3(10) 4N+[0..3]≥44, откуда минимальное N=11 Теперь запишем N=11 в двоичной системе и применим к нему заданный алгоритм. N=1011(2), число единиц три, нечетное, приписываем 1, получая 10111. Теперь число единиц четное, приписываем 0 и получаем R=101110(2). В десятичной записи ему соответствует число 46. ответ: 46
#include <sstream>
#include <vector>
#include <string>
using namespace std;
int main(int argc, char** argv) {
cout << "string: ";
string s; getline(cin, s);
istringstream ss(s);
vector<string> v;
while (ss >> s) v.push_back(s);
int j=v[0].size(),k=0;
for (int i=1; i<v.size(); i++)
if (v[i].size()>j) { j=v[i].size(); k=i; }
cout<<"long word: "<<v[k]<<endl<<endl;
system("pause");
return 0;
}