В с++ В некоторой стране используются денежные купюры достоинством в 1, 2, 4, 8, 16, 32 и 64. Дано натуральное число n.
Как наименьшим количеством таких денежных купюр можно выплатить сумму п (указать количество каждой из используемых для выплаты купюр)? Предполагается, что имеется достаточно большое количество купюр всех достоинств.
С кодом пожалуйста
Аноним:
Целая часть деления n/64 даст количество денежных купюр достоинством 64. Остаток от деления n на 64 переведите в в двоичную систему счисления и тогда единичка в разряде укажет на использование одной купюры соответствующего достоинства (1-32).
Ответы
Ответ дал:
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' а отличаются, но если остались вопросы, то пишите!
#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' а отличаются, но если остались вопросы, то пишите!
Вас заинтересует
2 года назад
2 года назад
7 лет назад
7 лет назад
9 лет назад