Ао условию, у тебя два шкафа, в каждом из которых 128 полок, и в этих полках 4 единицы (во всех 128), значит в обоих шкафах 8 единиц, отсюда следует: Максимальное кол-во единиц при 126 полках с нулями и 2 полками с единицами (1111000v000111=1111111 и 0000000v1000000=1000000) т..е. в 3 шкафу будет 126 полок с нулями и 2 полки с 8 единицами. Минимальное кол-во при 127 полками нулей и 1 полкой единиц (1111000v1111000=1111000) т.е. в 3м шкафу будет 127 полок с нулями и 1 полка с 4 единицами. Значит максимум 8 единиц, а минимум 4
#include <string>
using namespace std;
string arabicToRoman(unsigned &number)
{
const unsigned count = 13;unsigned arabic[count] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1
}, i, j;
string roman[count] = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX",
"V", "IV", "I" }, result = "";
for (i = 0; i < count; i++) {
for (j = 0; j < number / arabic[i]; j++) {
result += roman[i];
}
number %= arabic[i];
}
return result;
}
int main()
{
unsigned uin = 0;
cin >> uin;
cout << arabicToRoman(uin);
system("pause");
return 0;
}
Максимальное кол-во единиц при 126 полках с нулями и 2 полками с единицами
(1111000v000111=1111111 и 0000000v1000000=1000000) т..е. в 3 шкафу будет 126 полок с нулями и 2 полки с 8 единицами.
Минимальное кол-во при 127 полками нулей и 1 полкой единиц
(1111000v1111000=1111000) т.е. в 3м шкафу будет 127 полок с нулями и 1 полка с 4 единицами.
Значит максимум 8 единиц, а минимум 4