Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
1

Мафия

03.02.2019, 22:23. Показов 2039. Ответов 2

Всем известно, что главное в игре «мафия» - чаты сообщений. Андрей считает игру протестированной, если в чатах суммарно будет написано хотя бы n слов. Поскольку программисты не тестируют чаты, Андрею придется нанять несколько тестировщиков на следующих условиях: каждый тестировщик напишет приветственное сообщение, состоящее из a слов в общий чат игры, а также напишет каждом другому тестировщику приветственное сообщение, состоящее из b слов в личный чат. Тестировщики не буду писать других сообщений, кроме описанных выше.Предположим, что есть 3 тестировщика, каждый из которых должен написать «Всем привет!» (2 слова) в общий чат, а также «Привет» (1 слово) каждому другому тестировщику в личный чат. Тогда в общем чате будет написано 2 * 3 = 6 слов (каждый тестировщик напишет 2 слова), а в каждом личном чате будет написано по два слова (по одному слову от каждого тестировщика). Поскольку всего 3 личных чата (между первым и вторым, между первым и третьим, между вторым и третьим тестировщиками), то всего будет написано 3 · 2 = 6 слов в личных чатах. Итак, всего будет написано 6 + 6 = 12 слов во всех чатах. Во время тестирования только тестировщики будут писать сообщения в чаты сообщений.Поскольку Андрей не хочет тратить много денег на найм тестировщиков, он решил минимизировать их количество. Помогите ему узнать минимальное количество тестировщиков, которых придется нанять, чтобы в чатах суммарно было написано хотя бы n слов.
Входные данные:Первая строка содержит три целых числа n, a и b (https://www.cyberforum.ru/cgi-bin/latex.cgi?1 ⩽ n ⩽ https://www.cyberforum.ru/cgi-bin/latex.cgi?{10}^{12}, 0 ⩽ a, b ⩽ https://www.cyberforum.ru/cgi-bin/latex.cgi?{10}^{6}, 0 <a + b) - минимальное количество слов, которое должно быть написано, количество слов, которое должен написать каждый тестировщик в общий чат, а также количество слов, которое должен написать каждый тестировщик каждому другому в личный чат.
Выходные данные:Выведите одно целое число - минимальное количество тестировщиков, которое придется нанять, чтобы в чатах суммарно было написано хотя бы n слов.
Пример входного файла (input.txt):10 1 3
Пример выходного файла (output.txt):3
Мой вариант программы, не совсем правильный(не все тесты проходит) :
Pascal
1
2
3
4
5
6
var n,a,b,x,p,p1:qword;
begin
    read(n,a,b);
    if a>b then p:=a-b else p:=b-a;
  if n mod p<>0 then  write((n div (a+b))+1) else write((n div (a+2*b)+p));
end.
Помогите найти ошибку.
Заранее спасибо.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2019, 22:23
Ответы с готовыми решениями:

Мафия 2 тормозит в Windows 7
ребят, вопрос в следующем, я играю в мафия 2, недавно играл на Windows xp sp3, все было...

Простенькая игра мафия
Здравствуйте,хочу создать игру &quot;Мафия&quot;(Чтобы просто играть со знакомыми,хочу свой клиент,все сам...

Описать игру мафия на языке java
Добрый вечер. Нужна помощь. Задание: создать классы, описывающие игру мафия. Минимум 3-5 класса.

Написание программы (Мафия) для Windows
Здравствуйте уважамые форумчане, хочу написать программу в помощь ведущему для игры в мафию, мафия...

2
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
04.02.2019, 16:19  [ТС] 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var n,a,b,i,k,res:qword;
begin
    readln(n,a,b);
    if b=0 then begin
      k:=0;
        while (k<=20000000) do begin
            if (k*a>=n)
                then begin
                    write(k);
                    exit;
                  end else
           inc(k)
          end;
   end else if b>0 then begin
        k:=0;
        while (k<=20000000) do
            if (k*a+k*(k-1)*b)>=n then
             begin
                write(k);
                exit;
             end else inc(k);
        end;
end.
Проходит 80% тестов, не знаю что тут не так, может в ограничения не влезло?
0
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
23.02.2019, 19:49  [ТС] 3
Лучший ответ Сообщение было отмечено Cyborg Drone как решение

Решение

Засчитанное решение
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var n,a,b,k:qword;
begin
    readln(n,a,b);
    if b=0 then begin
     write((n+a-1) div a)
   end else if b>0 then begin
        k:=0;
        while (k*a+k*(k-1)*b)<n do
            k:=k+1;
        write(k);
        end;
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.02.2019, 19:49

[Массив] Эдди Морра и русская мафия
Здравствуйте, суть задачи на фото показано, буду рад если поможите

Игра в мафию, вероятность вытащить карту "мафия"
Всем привет! Возник следующий вопрос. Человек играет в мафию, где он каждую игру выбирает карту, он...

Алгоритм выдачи роли в игре "Мафия"
Вообщем, встал перед такой вот проблемой: Игроков может быть X&gt;8. Мафия: 1 к 4, комиссары: 1 к 2...

Оптимизация кода сервера (игра "Мафия")
Здравствуйте, пишу сервер для игры мафия. Я только начал, так что это ещё не весь код. Подскажите...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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