Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Stans
78 / 54 / 3
Регистрация: 05.12.2009
Сообщений: 435
#1

Задача про монахов - C++

25.10.2011, 16:57. Просмотров 1587. Ответов 7
Метки нет (Все метки)

Условие такое:
Имеется n монахов и m пирогов. Ведущий монах съедает за один раз 10 пирогов, обычный - 5, ученик монаха - 0.5. Вывести все возможные варианты, при которых n монахов съедят m пирогов. Нужно, чтобы каждый из монахов использовался хотя бы один раз.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2011, 16:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача про монахов (C++):

Задача про ракету - C++
Нужно решить задачу,написав код на с++. Ракета массой 300 т стартует с Земли. Через какое время она достигнет высоты 40 км, если за...

Задача про гостей - C++
Задача: представьте, что вы намерены пригласить к себе шестерых гостей, но за вашим столом могут поместиться всего лишь 4 человека....

Задача про 2 рюкзака - C++
Дано n предметов a1..an, и дан вес каждого из них. Требуется разделить все предметы на две группы так, чтобы вес каждой из груп был...

Задача про метеостанции - C++
На южном полюсе расположены N пронумерованных метеорологических станций. Каждая станция соединена с другими станциями линиями связи. В...

Задача про синусоиду - C++
Велосипедист Павлуша выехал на широкую дорогу. Но ехать иначе, чем по закону синусоиды, ему никак не удавалось. Юный спортсмен стартовал в...

Задача про Лестницу - C++
Условия формулируются так: Есть лестница высотой в n ступенек (плюс «нулевая» - площадка, где мы стоим вначале). На каждой ступеньке...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,927
25.10.2011, 17:13 #2
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>
#include <conio.h>
#include <clocale>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int m, n;
    cout<< "Ââåäèòå êîëè÷åñòâî ìîГ*Г*õîâ: ";
    cin>> n;
    cout<< "Ââåäèòå êîëè÷åñòâî ïèðîãîâ: ";
    cin>> m;
    for (int i = 1; i <= n-2; i++)
        for (int j = 1; j <= n-2; j++)
            for (int k = 1; k <= n-2; k++)
                if (i * 10 + j * 5 + k * 0.5 == m && i + j + k == n)
                    cout<< "ÂåðõîâГ*ûé ìîГ*Г*Гµ: "<< i
                        << "\nÎáû÷Г*ûé ìîГ*Г*Гµ: "<< j
                        << "\nÓ÷åГ*ГЁГЄ ìîГ*Г*ГµГ*: "<< k;
    getch();
    return 0;
}
1
Stans
78 / 54 / 3
Регистрация: 05.12.2009
Сообщений: 435
25.10.2011, 17:19  [ТС] #3
Примерно это я себе и представлял. Но мне нужно сделать задачу с использованием не более чем двух циклов(в идеале, с одним циклом). sorry за то, что сразу не указал
0
vndtta
90 / 67 / 13
Регистрация: 17.10.2011
Сообщений: 235
Завершенные тесты: 1
25.10.2011, 17:20 #4
Цитата Сообщение от MrGluck Посмотреть сообщение
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>
#include <conio.h>
#include <clocale>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int m, n;
    cout<< "Ââåäèòå êîëè÷åñòâî ìîГ*Г*õîâ: ";
    cin>> n;
    cout<< "Ââåäèòå êîëè÷åñòâî ïèðîãîâ: ";
    cin>> m;
    for (int i = 1; i <= n-2; i++)
        for (int j = 1; j <= n-2; j++)
            for (int k = 1; k <= n-2; k++)
                if (i * 10 + j * 5 + k * 0.5 == m && i + j + k == n)
                    cout<< "ÂåðõîâГ*ûé ìîГ*Г*Гµ: "<< i
                        << "\nÎáû÷Г*ûé ìîГ*Г*Гµ: "<< j
                        << "\nÓ÷åГ*ГЁГЄ ìîГ*Г*ГµГ*: "<< k;
    getch();
    return 0;
}
если монахов 2, а пирогов 1 - программа ничего не выдаст, хотя должна выдать 0 0 2
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,927
25.10.2011, 17:22 #5
Цитата Сообщение от vndtta Посмотреть сообщение
если монахов 2, а пирогов 1 - программа ничего не выдаст, хотя должна выдать 0 0 2
ну так по условию
Цитата Сообщение от Stans Посмотреть сообщение
Нужно, чтобы каждый из монахов использовался хотя бы один раз.
0
vndtta
90 / 67 / 13
Регистрация: 17.10.2011
Сообщений: 235
Завершенные тесты: 1
25.10.2011, 17:25 #6
Цитата Сообщение от Stans Посмотреть сообщение
Примерно это я себе и представлял. Но мне нужно сделать задачу с использованием не более чем двух циклов(в идеале, с одним циклом). sorry за то, что сразу не указал
C++
1
2
3
4
5
6
...
for(int i=0;i<n;i++){
 if (19*i+9*j == 2*m-n)
  cout<<...
}
...
это если немного подумать
10i + 5j +0.5k = m
i + j + k = n

-> (2*10-1) + (2*5-1)j + (2*0.5-1)k = 2*m-n

правда тут тоже ошибка, надо добавить условие, если есть одни только ученики монахов
C++
1
2
if (0.5*n == m)///0 0 n
       cout<<...
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,927
25.10.2011, 17:33 #7
Цитата Сообщение от vndtta Посмотреть сообщение
это если немного подумать
10i + 5j +0.5k = m
i + j + k = n

-> (2*10-1) + (2*5-1)j + (2*0.5-1)k = 2*m-n
как то у тебя вышло, что знаменатель при k = 0, т.е. кол-во монахов-учеников может быть любым.

Добавлено через 5 минут
Мб стоит как то отталкиваться от того, что
10 = 5*2 = 0.5 * 20
5 = 0.5 * 10
0
vndtta
90 / 67 / 13
Регистрация: 17.10.2011
Сообщений: 235
Завершенные тесты: 1
26.10.2011, 12:07 #8
Цитата Сообщение от MrGluck Посмотреть сообщение
как то у тебя вышло, что знаменатель при k = 0, т.е. кол-во монахов-учеников может быть любым.

Добавлено через 5 минут
Мб стоит как то отталкиваться от того, что
10 = 5*2 = 0.5 * 20
5 = 0.5 * 10
учеников монахов находим из формулы i+j+k=n; k=n-i-j
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2011, 12:07
Привет! Вот еще темы с ответами:

Задача про банк - C++
Вечер добрый! Прошу помощи, товарищи! Задание на скрине) #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; void main() { ...

Задача про кубики - C++
Есть столбики указанных размеров. Задание такое: Какое наименьшое количество перекладываний необходимо сделать, что бы высота 2х любых...

Задача про календарь - C++
Имеется задача: Два одноклассника Петя и Вася родились не ранее 1993 и не позднее 1994 года, причем, Петя старше Васи. Напишите...

Задача про графы - C++
помогите если не сложно Тексты нужно переписывать в тело сообщения!


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.10.2011, 12:07
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru