В с++ В некоторой стране используются денежные купюры достоинством в 1, 2, 4, 8, 16, 32 и 64. Дано натуральное число n.
Как наименьшим количеством таких денежных купюр можно выплатить сумму п (указать количество каждой из используемых для выплаты купюр)? Предполагается, что имеется достаточно большое количество купюр всех достоинств.
С кодом пожалуйста


Аноним: Целая часть деления n/64 даст количество денежных купюр достоинством 64. Остаток от деления n на 64 переведите в в двоичную систему счисления и тогда единичка в разряде укажет на использование одной купюры соответствующего достоинства (1-32).

Ответы

Ответ дал: marktiukov
4
Насколько я понял ваше условие, вот код (немножко на скорую руку, но рабочий!):

#include <cstdio>
#include <iostream>
using namespace std;
int main(){
int n, kolvo=0;//заводим переменную n и переменную kolvo, отвечающую за количество купюр

cout << "Enter n:\n";
cin >> n;//сканируем эту переменную
if (n > 64){
kolvo += n / 64;
n %= 64;

}

if (n > 32){

kolvo += n / 32;

n %= 32;

}

if (n > 16){
kolvo += n / 16;
n %= 16;

}
if (n > 8){
kolvo += n / 8;
n %= 8;

}
if(n > 4){
kolvo += n / 4;
n %= 4;

}
if (n > 2){
kolvo += 1;
n %= 2;
}

if (n == 1){
kolvo += 1;
}
cout <<"There's the number:\n"<< kolvo;
return 0;
}

P.S.:думаю понятно, почему последние два if' а отличаются, но если остались вопросы, то пишите!


Вас заинтересует