Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
 Аватар для BOR1K
14 / 14 / 3
Регистрация: 19.09.2009
Сообщений: 289

Монеты.

26.11.2009, 19:03. Показов 3254. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется по одной монете следующих достоинств: 1, 2, 3, 5, 10, 15, 25, 50, 100, 500, 1000, 2500, 5000, 10000. Можно ли набрать из этих монет заданную сумму. Указать, как это сделать.

Входные данные: целое положительное число n – денежная сумма.

Выходные данные: ответ в виде "Можно"\"Нельзя , варианты разложения суммы на монеты, если это возможно .

Все варианты перебрал, даже алгоритм не могу составить.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.11.2009, 19:03
Ответы с готовыми решениями:

монеты
Помогите решить, пожалуйста! У покупателя есть n монет достоинством H(1),..., H(n). У продавца есть m монет достоинством B(1),...,B(l)....

Игра в монеты С++
Вообщем есть задача 2 игрока играют в следующую игру: они разложили однокопеечные монетки в стопки (в разных стопках может быть различное...

Монеты номиналом 1, 2, 5, 10, 25, 50
У Вас есть монеты номиналом 1, 2, 5, 10, 25 та 50 копеек в бесконечном количестве. Сколькими способами можно выдать один рубль? У меня есть...

10
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
26.11.2009, 19:07
а ты в алгоритмах пошарь, там один в один была задача. или на фрилансе, помню Odip всё рассуждал. но такое точно было.
начинать там надо как всегда с максимального номинала и постепенно уменьшать.
язык назови, подумаю на досуге

Добавлено через 43 секунды
и у тебя ответ всегда будет можно, так как есть минимальный номинал: 1
0
 Аватар для BOR1K
14 / 14 / 3
Регистрация: 19.09.2009
Сообщений: 289
26.11.2009, 19:12  [ТС]
По одной монете. Язык си.

Добавлено через 3 минуты
можно число делить, на номиналы кот меньше его, и если остатока нет, то норм)) вроде так.
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
26.11.2009, 19:19
а вот тебе на быструю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
using namespace std;
 
 
int main()
{
    const unsigned long nominal[] ={ 1, 2, 3, 5, 10, 15, 25, 50, 100, 500, 1000, 2500, 5000, 10000 };
    
    unsigned long sum;
    cout<<"Enter your sum: "; cin>>sum;
 
    while (sum)
    {
        for (int i=sizeof(nominal)/sizeof(nominal[0]); --i>=0;)
        {
            if(sum>=nominal[i]) {cout<<nominal[i]<<endl; sum-=nominal[i]; break;}
        }
    }
 
    system("pause");
    return 0;
}
Добавлено через 1 минуту
про язык не успел увидеть

Добавлено через 1 минуту
но там всё прочто. cout на printf, cin - scanf, ну и шапку поправить

можно и делить, это как оптимизация. можно много чего придумать. я не утверждаю что это лучший вариант, даже наоборот
1
 Аватар для BOR1K
14 / 14 / 3
Регистрация: 19.09.2009
Сообщений: 289
26.11.2009, 19:47  [ТС]
Чет решения понять немогу, зачем бесконечный цикл делать
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
26.11.2009, 19:52
где там бесконечный?

while (sum) будет выполняться пока sum не равно нулю. а в результате работы строчки 18 sum рано или поздно обратиться в 0.

но лучше рассмотри вариант с делением, особенно если тебе надо выводит какое количетсво монет какого номинала используется
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
26.11.2009, 20:58
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
 using namespace std;
 int main()
{
        const unsigned long nominal[] ={ 1, 2, 3, 5, 10, 15, 25, 50, 100, 500, 1000, 2500, 5000, 10000 };
        int mas[14], i=0, j, temp, b=1;
        unsigned long sum;
        cout<<"Enter your sum: "; cin>>sum;
        while(nominal[i]<sum && i<14)
            i++;
        mas[0]=nominal[i-1];
        temp=mas[0];
        for(j=i-2; j>=0 && temp!=sum; j--)
        {
            if(temp+nominal[j]<=sum)
            {
                mas[b]=nominal[j];
                b++;
                temp+=mas[b-1];
            }
        }
        if(temp!=sum)
            cout<<"Nelzy"<<endl;
        else
        {
            cout<<"Mogno"<<endl;
            for(i=0; i<b; i++)
                cout<<mas[i]<<endl;
        }
 
        system("pause");
        return 0;
}
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
27.11.2009, 02:34
Цитата Сообщение от TanT Посмотреть сообщение
особенно если тебе надо выводит какое количетсво монет какого номинала используется
Там же в задании по одной монете каждого достоинства...

Вот так ещё посчитать можно
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
 
/*
    Имеется по одной монете следующих достоинств: 1, 2, 3, 5, 10, 15, 25, 50, 100, 500, 1000, 2500, 5000, 10000. 
    Можно ли набрать из этих монет заданную сумму.
*/
 
#define NUM_COINS 14
 
int main(void){
    int have_coins[NUM_COINS] = { 10000, 5000, 2500, 1000, 500, 100, 50, 25, 15, 10, 5, 3, 2, 1 };
    int used_coins[NUM_COINS] = { 0 };
    int *pHcoin, *pUcoin, sum, left;
    
    printf("Enter sum needed: ");
    scanf("%d", &sum); 
    if ( sum <= 0 ){
        printf("Wrong data!\n");
        return 1;
    }
    
    for ( pHcoin = have_coins, pUcoin = used_coins, left = sum; pHcoin < have_coins + NUM_COINS; pHcoin++ ){
        if ( !left ) /* сумма набрана */
            break;
        if ( left - *pHcoin >= 0 ){
            *pUcoin++ = *pHcoin;
            left -= *pHcoin;
        }
    }
    
    if ( left )
        printf("Unreal to collect the necessary sum, sorry\n");
    else{
        printf("The sum of %d collecting by coins:\n", sum);
        for ( left = 0; left < NUM_COINS; left++ ){
            if ( !used_coins[left] )
                break;
            printf("%d ", used_coins[left]);
        }
        putchar('\n');
    }
    
    return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
27.11.2009, 04:43
Цитата Сообщение от easybudda Посмотреть сообщение
for ( pHcoin = have_coins, pUcoin = used_coins, left = sum; pHcoin < have_coins + NUM_COINS; pHcoin++ ){
if ( !left ) /* сумма набрана */
break;
if ( left - *pHcoin >= 0 ){
*pUcoin++ = *pHcoin;
left -= *pHcoin;
}
}
вот так
C
1
2
3
4
5
6
7
8
    for ( pHcoin = have_coins, pUcoin = used_coins, left = sum; pHcoin < have_coins + NUM_COINS; pHcoin++ ){
        if ( left - *pHcoin >= 0 ){
            *pUcoin++ = *pHcoin;
            left -= *pHcoin;
        }
        if ( !left ) /* сумма набрана */
            break;
    }
всё-таки немного правильнее, хотя и не принципиально
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
27.11.2009, 12:17
Это где вы монеты по 10000 руб видели ?
В форуме уже решали примерное аналогичную задачу.
Там еще нужно было очень быстро посчитать
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
27.11.2009, 12:34
Цитата Сообщение от odip Посмотреть сообщение
Это где вы монеты по 10000 руб видели ?
Одна из них к нему значит попала
http://www.bankirsha.com/monet... ublei.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.11.2009, 12:34
Помогаю со студенческими работами здесь

Задача про монеты
Привет. Задача: По кругу расположено N монет гербами вверх и M монет гербами вниз. Обходя круг по ходу часовой стрелки, переворачивает...

Генератор броска монеты
Задание: создать генератор броска монетки и посчитать количество решек и орлов для 500 бросков. int main() { int oneSide = 0; ...

Кузнечик собирает монеты
Кузнечик прыгает по столбикам, расположенным на одной линии на равных расстояниях друг от друга. Столбики имеют порядковые номера от 1 до N...

Кузнечик, собирающий монеты
на числовой прямой в точке 0 находится кузнечик. он умеет прыгать только вперед на 1, 2, 3 или 4 деления. в каждой точке кузнечик либо...

Кузнечик, собирающий монеты
Дано число кувшинок m На каждой из них положительное или отрицательное число. Кузнечик, начиная прыгать с 1, прыгает через одну или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru