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

Для каждого теста в отдельной строке вывести число людей, носящих белые шляпы или -1

30.12.2016, 18:41. Показов 1759. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Белые шляпы

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

Входные данные

Каждая строка представляет собой один тест. В каждой строке задана последовательность чисел a1, a2, ..., an, где ai содержит число белых шляп, подсчитанных i - ым человеком.

Выходные данные

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

Входные данные #1
2 1 1
2 2 2
10 10
Выходные данные #1
2
3
-1

полный ответ
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.12.2016, 18:41
Ответы с готовыми решениями:

Для каждого числа в отдельной строке вывести его квадратный корень
ребята, помогите с этой простой задачкой, объясните , что к чему, спасибо. ...

Для каждого слова в отдельной строке вывести YES если его можно сложить из печенья, и NO если нет
Вот условия задачи И снова знаменитые буквы из печенья поступили в продажу! Их можно не только есть - с ними можно еще и играть. Ваша...

Найти все числа в строке и вывести каждое число в отдельной строке (ошибка в коде)
Помогите пожалуйста с кодом. Задание такое: Найти все числа в строке, каждое число вывести в отдельной строке. Даже представления не имею...

15
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
30.12.2016, 20:36
В правильности решения очень не уверен
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
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    bool f=true;
    vector<int>v;
    int n,m;
    cin>>n;
    for(int i=0; i!=n; i++) {
        cin>>m;
        if(m>n-1) {
            f=false;
        }
        v.push_back(m);
    }
    if(f) {
        if(all_of(v.cbegin(),v.cend(),[&v,&n](const int &x) { return x==*v.begin() && x<=n-1 && x!=0;})) {
            cout<<n<<endl;
        }
        else {
            auto max=max_element(v.cbegin(),v.cend());
            if((*max-*v.begin()==1 && *max<=n-1) ||(*max-*v.begin()==0) ) {
                cout<<*max<<endl;
            }
        }
    } else cout<<"-1";
 
    return 0;
}
Добавлено через 8 минут
Чуть подправленный вариант, но тоже не внушает
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
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    bool f=true;
    vector<int>v;
    int n,m;
    cin>>n;
    for(int i=0; i!=n; i++) {
        cin>>m;
        if(m>n-1) {
            f=false;
        }
        v.push_back(m);
    }
    if(f) {
        if(all_of(v.cbegin(),v.cend(),[&v,&n](const int &x) { return x==*v.begin() && x<=n-1 && x!=0;})) {
            cout<<n<<endl;
        }
        else if(*max_element(v.cbegin(),v.cend())-*min_element(v.cbegin(),v.cend())>1) {
            cout<<"-1";
        } else {
            auto max=max_element(v.cbegin(),v.cend());
            if((*max-*v.begin()==1 && *max<=n-1) ||(*max-*v.begin()==0) ) {
                cout<<*max<<endl;
            }
        }
    } else cout<<"-1";
 
    return 0;
}
Добавлено через 14 минут

Не по теме:


Думаю Mr. X придёт и покажет как надо :)

0
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 31
30.12.2016, 20:39  [ТС]
8 строка ошибка

Добавлено через 27 секунд
ой 18
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
30.12.2016, 20:39
НоНейм, какая?
0
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 31
30.12.2016, 20:40  [ТС]
C++
1
if(all_of(v.cbegin(),v.cend(),[&v,&n](const int &x) { return x==*v.begin() && x<=n-1 && x!=0;})) {
Добавлено через 12 секунд
тут
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
30.12.2016, 20:41
Ошибка какая я имел ввиду
0
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 31
30.12.2016, 20:43  [ТС]
компилятор показывает там ошибка ошибка твоя а не моя

Добавлено через 44 секунды
исправь пож,заранее спасибо!
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
30.12.2016, 20:43
http://cpp.sh/72vzcm
Вот, работает
0
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 31
30.12.2016, 20:45  [ТС]
решение на 0%
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
30.12.2016, 20:45
НоНейм, А, у вас для сайта что ли?
0
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 31
30.12.2016, 20:46  [ТС]
ага,да проста задача мне не смог решить
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
31.12.2016, 09:15
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
///////////////////////////////////////////////////////////////////////////////
//1.
///////////////////////////////////////////////////////////////////////////////
//Белые шляпы
 
//В комнате находится несколько людей. На каждом одета белая или
//черная шляпа. Каждый человек подсчитывает количество белых шляп,
//которое он видит на головах других. Вычислить число людей, носящих
//белые шляпы или сообщить, что входные данные не могут соответствовать
//реальной ситуации.
 
//Входные данные
 
//Каждая строка представляет собой один тест. В каждой строке задана
//последовательность чисел a1, a2, ..., an, где ai содержит число белых
//шляп, подсчитанных i - ым человеком.
 
//Выходные данные
 
//Для каждого теста в отдельной строке вывести число людей, носящих
//белые шляпы или -1, если входные данные не соответствуют реальной
//ситуации.
 
//Входные данные #1
//2 1 1
//2 2 2
//10 10
//Выходные данные #1
//2
//3
//-1
///////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include <iostream>
#include <map>
#include <sstream>
#include <string>
#include <vector>
///////////////////////////////////////////////////////////////////////////////
typedef std::string                             T_str;
typedef double                                  T_val;
typedef std::vector     < T_val     >           T_val_arr;
typedef std::map        < T_val,    int     >   T_count_of_val;
///////////////////////////////////////////////////////////////////////////////
bool    successfully_set_white_hats_count
    (
        T_str   const   &   s,
        T_val           &   res
    )
{
    std::istringstream  ssin(s);
    T_count_of_val      count_of_val;
 
    T_val               val_cur     {};
    int                 men_total   {};
    T_val               sum         {};
 
    while( ssin     >>  val_cur )
    {
        ++men_total;
        sum     +=  val_cur;
        ++count_of_val[ val_cur ];
    }//while
 
    res     =   sum / --men_total;
 
    return      res                             ==  int(res)
            &&  count_of_val.begin()->second    ==  res
 
            &&  (
                        count_of_val.size()     ==  1
                    ||  count_of_val.size()     ==  2
                )
 
            &&      std::abs    (
                                        count_of_val.begin      ()->first
                                    -   count_of_val.rbegin     ()->first
                                )
                <=  1;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    T_str       s_cur;
    T_val_arr   res_arr;
 
    while   (
                    std::getline( std::cin,     s_cur )
                &&  !s_cur.empty()
            )
    {
        T_val   res{};
        auto    bool_res    =   successfully_set_white_hats_count
                                    (
                                        s_cur,
                                        res
                                    );
 
        res_arr.emplace_back    (
                                    bool_res
                                        ?   res
                                        :   -1
                                );
    }//while
 
    for( auto   res     :   res_arr )
    {
        std::cout   <<  res
                    <<  std::endl;
    }//for
}
0
31.12.2016, 10:04

Не по теме:


Mr.X, хотелось бы услышать экспертное мнение, мой вариант хоть малость рабочий, или на 0% как выдал сайт?:D
если откинуть тот факт,что вводить данные надо было строкой

0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
31.12.2016, 10:43
Цитата Сообщение от НоНейм Посмотреть сообщение
проста задача мне не смог решить
Откуда Вы знаете, что задача простая, если не смогли её решить? Откуда такая уверенность?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
31.12.2016, 11:00
Цитата Сообщение от Peoples Посмотреть сообщение
Mr.X, хотелось бы услышать экспертное мнение, мой вариант хоть малость рабочий, или на 0% как выдал сайт?
Мда, попробовал прочесть вашу программу... Оригинально вы скобочки расставляете! Ну и логика программы у вас столь запутана, что вероятность допустить ошибку, мне кажется, очень высокая. Будьте проще, и к вам потянутся люди!
А вы ее не тестировали что ли?
1
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
31.12.2016, 11:48
Mr.X, в тестах которые проводил я, ответы были правильные
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.12.2016, 11:48
Помогаю со студенческими работами здесь

Для каждого набора вывести номер его первого элемента, равного 2, или число 0, если в данном наборе нет двоек
Даны целые числа K, N, а также K наборов целых чисел по N элементов в каждом наборе. Для каждого набора вывести номер его первого элемента,...

Для каждого исходного набора вывести номер последного элемента равного 2, или число 0, если в данном наборе нет двоек
Даны целые числа K,N, а также K набор целых чисел по N в каждом наборе. Для каждого набора вывести номер его последного элемента равного 2,...

Вывести фамилии людей, живущих в разных городах по одинаковым адресам или сообщить, что таких людей нет
Задача:В файле содержаться адреса n человек. Вывести фамилии людей, живущих в разных городах по одинаковым адресам или сообщить, что таких...

Напечатать название и город каждого клуба на отдельной строке.
Названия 20-ти футбольных клубов и городов, которые они представляют, записаны в двух различных таблицах. Напечатать название и город...

Напечатать название и город каждого клуба на отдельной строке
Названия 20-ти футбольных клубов и городов которые они представляют, записаны в двух различных таблицах. Напечатать название и город...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru