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

за стол!

26.06.2021, 19:27. Показов 1963. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В известном во всём городе Центре Приличия и Самоконтроля каждую субботу проходят мастер-классы, на которых посетители тренируются быть скромными, учатся держать себя в руках и не говорить первое, что приходит в голову, контролируя свои эмоции.

Как это обычно бывает, после занятий все пришедшие садятся за круглый стол, который подготовила хранительница центра. Садится каждый, иначе это покажется неприличным. По краю стола расположены N разнообразных блюд, каждое блюдо имеет свою калорийность Ci. Когда гость садится за стол, ему достаются какие-то расположенные подряд блюда. Гости должны сесть так, чтобы не обидеть друг друга, то есть сумма калорийностей выбранных блюд должна у всех совпадать. И при этом не обидеть хранительницу, съев все блюда на столе.

К сожалению, это не всегда возможно, и если гости не смогут рассадиться по заданным критериям, они могут потерять контроль над собой и забудут про все правила приличия! Известно, что сегодня придёт от 1 до N человек. Хранительница попросила Вас написать программу, которая сообщит: для каких количеств такая рассадка будет возможна, а для каких нет.

Входные данные
В первой строке входного файла INPUT.TXT содержится натуральное число N – количество блюд на столе (1 ≤ N ≤ 105).

Во второй строке перечислены калорийности блюд Ci в порядке обхода стола по часовой стрелке.

Калорийность – неотрицательное целое число, сумма всех калорийностей не превосходит 109.

Выходные данные
В выходной файл OUTPUT.TXT выведите строку из N символов: K-ый символ (1 ≤ K ≤ N) должен быть равен «1», если возможно рассадить K гостей за столом и «0» – иначе.






Примеры
№ INPUT.TXT OUTPUT.TXT
1 4
3 2 2 1 1100

2 6
1 1 1 1 1 1 111001

3 5
1 0 0 1 1 10100



Мой код:
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
#include <iostream>
 using namespace std;
 
 int main()
 {
    int k,n,sum,v;
    cin >> n;
    int a[n];
    for(int i = 0;i < n;i++)
    {
        cin >> a[i];
        sum += a[i];
 
    }
    for(int k = 1; k < n;k++)
    {
        if (sum % k == 0)
        {
            cout << "1";}
            else if(sum % k != 0){
 
            cout << "0";}
    }
    v = 0;
for(int i = 0; i < n - 1;i++)
{
    if (a[i + 1] == a[i])
    {
 
        v++;
    }
}
if (a[n] = a[n - 1])
{
    v++;
}
if(v  == n)
{
    cout << "1";
}
else
{
    cout << "0";
}
    return 0;
 }
По примерам все проходит. В чем ошибка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.06.2021, 19:27
Ответы с готовыми решениями:

Where t1.field1='Стол'' (#Стол# с одинарной ковычкой) - дает ошибку
name2='Стол 1/2''' Set id= db.OpenRecordset('select * from table1 where table1.name=''' &amp; name2 &amp; '''') В конце name2 стоит...

Рабочий Стол!
Доброе Время Суток! Дамы И Господа :) У Меня Такой Вопрос! Почему Нету Ярлыков На Рабочем Столе И Даже Не Могу Обвадить Тупо Есть ТОка Один...

рабочий стол
поменялись ярлыки на рабочем столе. востановление системы не помогла. вирусов нет. Просьба помочь кто сталкивался с этой проблемой...

13
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
26.06.2021, 19:45
здесь не соответствие стандарту С++
Цитата Сообщение от merpeliv Посмотреть сообщение
cin >> n;
    int a[n];
размер статического массива должен быть известен на этапе компиляции. перейдите на динамический массив

Цитата Сообщение от merpeliv Посмотреть сообщение
if (a[n] = a[n - 1])
здесь выход за границу массива. последний элемент массива a[n-1]

Добавлено через 7 минут
строки 17-22 можете записать проще:
C++
1
2
if (sum % k == 0)  cout << "1";
else cout << "0";
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13179 / 6815 / 1821
Регистрация: 18.10.2014
Сообщений: 17,243
26.06.2021, 19:49
Цитата Сообщение от merpeliv Посмотреть сообщение
В чем ошибка?
Какая "ошибка"? О чем ваш вопрос?
1
0 / 0 / 0
Регистрация: 24.06.2021
Сообщений: 11
26.06.2021, 20:35  [ТС]
TheCalligrapher, тестирующая система на какой-то этапе останавливается и показывает "ответ неверный".

Добавлено через 33 минуты
Yetty, теперь проходит больше тестов,но все еще не все
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
#include <iostream>
 using namespace std;
 
 int main()
 {
    int k,n,sum,v;
    cin >> n;
    int * a = new int [100000];
    for(int i = 0;i < n;i++)
    {
        cin >> a[i];
        sum += a[i];
 
    }
    for(int k = 1; k < n;k++)
    {
        if (sum % k == 0)  cout << "1";
else cout << "0";
    }
    v = 1;
for(int i = 0; i < n - 1;i++)
{
    if (a[i + 1] == a[i])
    {
 
        v++;
    }
}
 
 
if(v  == n)
{
    cout << "1";
}
else
{
    cout << "0";
}
    return 0;
 }
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
26.06.2021, 20:50
merpeliv, я сообщил про явные ошибки в написании, логику кода не смотрел. динамический массив не нужно задавать максимального размера, он тем и удобен, что занимает столько памяти сколько нужно. замените 100000 на n
C++
1
int * a = new int [n];
когда массив уже не нужен освободите память:
C++
1
delete[]a;
эту строку можно поставить перед return 0;
1
0 / 0 / 0
Регистрация: 24.06.2021
Сообщений: 11
26.06.2021, 21:04  [ТС]
Yetty, cделал,но результат остался таким же
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
26.06.2021, 21:09
Цитата Сообщение от merpeliv Посмотреть сообщение
результат остался таким же
как мог результат измениться ? Вы же просто правильно объявили массив.

эти строки зачем убрали ?
Цитата Сообщение от merpeliv Посмотреть сообщение
if (a[n] = a[n - 1])
{
    v++;
}
может их нужно было не убрать, а правильно записать ?
1
0 / 0 / 0
Регистрация: 24.06.2021
Сообщений: 11
26.06.2021, 21:41  [ТС]
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 <iostream>
 using namespace std;
 
 int main()
 {
    int k,n,sum,v;
    cin >> n;
    int * a = new int [n];
    for(int i = 0;i < n;i++)
    {
        cin >> a[i];
        sum += a[i];
 
    }
    for(int k = 1; k < n;k++)
    {
        if (sum % k == 0)  cout << "1";
else cout << "0";
    }
    v = 0;
for(int i = 0; i < n - 1;i++)
{
    if (a[i + 1] == a[i])
    {
 
        v++;
    }
}
if (a[n - 1] == a[n - 2])
{
    v++;
}
 
if(v  == n )
{
    cout << "1";
}
else
{
    cout << "0";
}
delete[]a;
    return 0;
 }
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
27.06.2021, 00:42
merpeliv, какой результат выдаёт тестирующая система на последний вариант кода ?
1
0 / 0 / 0
Регистрация: 24.06.2021
Сообщений: 11
27.06.2021, 12:29  [ТС]
Yetty,
Миниатюры
за стол!  
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
27.06.2021, 13:02
в строке 15 должно быть строгое неравенство ?
1
0 / 0 / 0
Регистрация: 24.06.2021
Сообщений: 11
27.06.2021, 21:46  [ТС]
Yetty, думаю да. У меня осталось пару часов для того чтобы я решил и сдал задачу,но мне больше интересно не сдать ее,а понять в чем моя ошибка...
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
27.06.2021, 22:00
Цитата Сообщение от merpeliv Посмотреть сообщение
думаю да
протестируйте с нестрогим неравенством
0
0 / 0 / 0
Регистрация: 24.06.2021
Сообщений: 11
27.06.2021, 22:25  [ТС]
if (sum % k == 0) все таки думаю ошибка тут.

Добавлено через 7 минут
Yetty,
Цитата Сообщение от merpeliv Посмотреть сообщение
for(int k = 1; k < n;k++)
если будет нестрогое неравенство,то может быть такой случай,как в первом примере
Цитата Сообщение от merpeliv Посмотреть сообщение
1 4
3 2 2 1 1100
8 делится на 4 без остатка
Цитата Сообщение от merpeliv Посмотреть сообщение
cout << "1";
,но 4 человека не смогут съесть блюда поровну 3 2 2 1. поэтому это неправильно

Добавлено через 12 минут
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
#include <iostream>
 using namespace std;
 
 int main()
 {
    int k,n,sum,v;
    cin >> n;
    int * a = new int [n];
    int mini;
    int maxi;
    for(int i = 0;i < n;i++)
    {
        cin >> a[i];
        sum += a[i];}
    maxi = a[0];
    mini = a[0];
    for(int i = 1;i < n;i++){
     if(mini > a[i]){
            mini = a[i];
     }
     if(maxi < a[i])
     {
         maxi = a[i];
     }
    }
 
 
    for(int k = 1; k < n;k++)
    {
        if (sum % k == 0)  cout << "1";
else cout << "0";
    }
if (mini == maxi)
        cout << "1";
    else cout << "0";
 delete[]a;
    return 0;
 }
Я решил чуть по-другому. Если минимум и максимум равны ,то все числа равны и в конце пишется 1 .
Все-таки подозреваю,что ошибка тут
Цитата Сообщение от merpeliv Посмотреть сообщение
if (sum % k == 0)
Но не знаю почему
Если по условию у нас все блюда должны быть съедены и каждый должен съесть одинаковое количество каллорий, то сумма всех каллорий должна делиться на количество людей нацело.

Добавлено через 2 минуты
4
2 2 1 1
1110
Вот тут ошибка в тестирующей части,кхм...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.06.2021, 22:25
Помогаю со студенческими работами здесь

Нарисовать стол
1-коричневый 2-серый з-чорный цвет фона-белый цвет линии-чорный

Рабочий стол
Добрый день! У меня возникла проблема при запуске Ноутбука, он по началу очень долго грузился (минуты 3). Затем когда я зашёл в...

Рабочий стол
Подскажите пожалуйста, у меня такая проблема. При нажатие правой кнопкой мыши на пустом рабочем столе при попытке вызвать свойства, у меня...

Рабочий стол
Здравствуйте! при создавании или сохранении объектов на рабочий стол они копируются. причем,удаляя одну копию, удаляются обе. что с рабочим...

Рабочий стол
Тема о том, какой рабочий стол лучше. Что Вам в нём нравится или наоборот не нравится. Почему я не люблю Unity/Unity2? Две панели...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru