Переведём число 130 в двоичную систему счисления:
13010=100000102
Число N должно быть на два разряда меньше, то есть уберем из двоичной записи числа 130 два левых разряда:
100000
Теперь попробуем применить к нему алгоритм. Сначала складываются три левых разряда, и остаток от деления на 2 этой суммы запишем в конец числа справа:
1000001
Теперь сложим правые четыре разряда, и остаток от деления этой суммы тоже запишем слева:
10000011
Как мы видим, при числе 1000002 мы получили число 100000112, что на единицу больше, чем число 130. При этом 1000002 = 3210, то есть минимальное возможное N не только для R, которое больше 130, но и по условию задания.
ответ: 32
#include <iostream>
#include <string>
using namespace std;
string dectobin(int num) // функция для перевода
{
string result; // строка для результата
for (; num!=0; num>>=1) // цикл со сдвигом вправо на 1 бит (работает быстрее чем деление на 2,
//но также делит)
result.insert(0, num&1 ? "1" : "0"); // вставка цифры в начало строки (1 если последний бит 1, 0 если 0)
return result; // возврат результата
}
int main(int argc, char *argv[])
{
// тут думаю понятно, ввод данных и вызов функции
int num;
cout<<"Enter number: ";
cin>>num;
cout<<dectobin(num);
return 0;
}