Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/76: Рейтинг темы: голосов - 76, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 23.03.2009
Сообщений: 14

Задача дед мороз (перебор)

23.03.2009, 21:23. Показов 16264. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
для начала вот задачка:

Подарки Деда Мороза
(Время: 1 сек. Память: 16 Мб Сложность: 27%)

Ириска весит X грамм, мандарин – Y грамм, пряник – Z грамм.

Требуется написать программу, которая определит, сколько различных вариантов подарков весом ровно W грамм может сделать Дед Мороз.
Входные данные

В единственной строке входного файла INPUT.TXT содержится четыре числа X, Y, Z и W (1 ≤ X, Y, Z ≤ 100, 1 ≤ W ≤ 1000).
Выходные данные

Выходной файл OUTPUT.TXT должен содержать одно целое число – количество вариантов подарков.
Пример
INPUT.TXT 10 25 15 40
OUTPUT.TXT 3
легкая задача, да? вот мое решение:

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
//dead moroz
#include <fstream>
#include <iostream>
 
using namespace std;
 
ifstream fin ("input.txt");
ofstream fout ("output.txt");
 
int main()
{
    int X,Y,Z,W,sum=0;
    fin>>X>>Y>>Z>>W;
    for (int i=0;i<=X;i++){
        for (int j=0;j<=Y;j++){
            for (int n=0;n<=Z;n++){
                if ((X*i)+(Y*j)+(Z*n)==W){sum++;}
                }
            }
        }
 
fout<<sum;
 
 
fin.close();
fout.close();
    return 0;
}
ну чего тут не правильно? по тестам не проходит на первом же тесте . объясните, может неправильно понял?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2009, 21:23
Ответы с готовыми решениями:

Задача на перебор
Нужна помощь в решении, задача: Вы имеете N камней (1 ≤ N ≤ 10), каждый камень характеризуется весом Pi и стоимостью Vi. Вы должны...

Задача на рекурсивный перебор
В выражении ((((1?2)?3)?4)?5)?6 . Нужно заменить знаки вопроса на знаки +-*/ чтобы в итоге получилось 35. Ну например: 1+2+3*4+5+6=35 ...

Перебор. Задача про ферзей.
На шахматной доске требуется расставить 8 ферзей, что бы ни один ферзь не атаковал другого. Написал программу. Три дня писал). Что вы...

5
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
23.03.2009, 21:30
потому что цикл по-моему должен быть таким

C++
1
2
3
4
5
6
7
8
    
    for (int i=0;i<=W;i++){
        for (int j=0;j<=W;j++){
            for (int n=0;n<=W;n++){
                if ((X*i)+(Y*j)+(Z*n)==W){sum++;}
                }
            }
        }
0
0 / 0 / 0
Регистрация: 23.03.2009
Сообщений: 14
23.03.2009, 21:34  [ТС]
1 ≤ X, Y, Z ≤ 100
понял, судя по этому надо было сделать до 100. спс

Добавлено через 1 минуту 36 секунд
все время забываю про ограничения. спс всем. там еще надо с 1, а не с 0
0
 Аватар для Humanitis
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
23.03.2009, 21:53
C++
1
2
3
4
5
6
7
8
9
    
int temp_X,temp_Y;
    for (int i=0;i<=W/X;i++){
        for (int j=0;j<=(W-(temp_X=X*i))/Y;j++){
            for (int n=0;n<=(W-temp_X-(temp_Y=Y*j))/Z;n++){
                if (temp_X+temp_Y+(Z*n)==W){sum++;}
                }
            }
        }
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
23.03.2009, 21:54
да нет.. если можно набрать только одних падарков (например ирисок)
тогда с 0 циклы должны начинаться..

а.. ну следую твоим условиям.. тогда вот так вот

C++
1
2
3
4
5
6
7
    for (int i=1;i<=W;i++){
        for (int j=0;j<=W;j++){
            for (int n=0;n<=100;n++){
                if ((X*i)+(Y*j)+(Z*n)==W){sum++;}
                }
            }
        }
0
0 / 0 / 0
Регистрация: 23.03.2009
Сообщений: 14
23.03.2009, 22:07  [ТС]
спс всем за помощь. Шоб прога прошла таймлимит я сделал квадратную сложность(два фора)
вот кон.вариант
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
//dead moroz
#include <fstream>
#include <iostream>
 
using namespace std;
 
ifstream fin ("input.txt");
ofstream fout ("output.txt");
 
int main()
{
    int X,Y,Z,W,sum=0;
    fin>>X>>Y>>Z>>W;
 
int temp_X,temp_Y,temp_Z;
    for (int i=0;i<=W/X;i++){
        for (int j=0;j<=(W-(temp_X=X*i))/Y;j++){
            temp_Y=Y*j;
            temp_Z=W-(temp_X+temp_Y);
            if(temp_Z%Z==0){sum++;}
            }
        }
 
fout<<sum;
 
 
fin.close();
fout.close();
    return 0;
}
Добавлено через 57 секунд
а на счет ограничения 1 или 0, то это хз, условия неправильное. начаиная с нуля все тесты проходятся
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.03.2009, 22:07
Помогаю со студенческими работами здесь

Дед Мороз и Снегурочка
Дед Мороз и Снегурочка приходят на детские утренники с мешком конфет. Дед Мороз делит конфеты поровну между всеми присутствующими детьми...

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он уплатил по 31 талеру, а за каждого быка по...

Задача на перебор
Дана задача на перебор: &quot;Дан случайный набор чисел, разбить их на 2 группы минимизировав разницу суммарного веса каждой&quot;. Не совсем...

Задача на перебор
Помогите решить задачу перебором. Задача: Если GREATPEOPLE + ITRANSITION ----------- DEVELOPMENT в позиционной...

Задача на перебор


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
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