В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
lerkina12
lerkina12
20.08.2022 03:07 •  Информатика

Задача C. Кибер-взлом Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 2 секунды
Ограничение по памяти: 512 мегабайт
Ви пытается взломать сервера корпорации Арасака, чтобы отключить охрану и проникнуть в
их офис. Искусственный интеллект сервера пытается ему в этом помешать.
Взлом происходит следующим образом. Рассмотрим ориентированный граф, на каждом ребре
которого написана буква английского алфавита. Граф может содержать кратные ребра и даже
петли. У Ви есть токен, изначально находящийся в некоторой вершине v, и у ИИ сервера есть
токен, изначально находящийся в некоторой вершине u. Затем они по-очереди совершают ходы, Ви
ходит первым. На своём ходу Ви выбирает произвольное ребро, исходящее из вершины, в которой
находится его токен. Он перемещает токен по этому ребру, а также пытается произвести атаку типа
c, где c — символ, написанный на выбранном ребре. ИИ на своём ходу также выбирает одно из
рёбер, исходящих из вершины, в которой находится его токен, и перемещает токен по этому ребру.
При этом, чтобы успешно отразить атаку, он должен выбрать ребро, на котором написан тот же
символ c.
Если Ви не может сделать ход, потому что из вершины, в которой находится его токен, не исходит
ни одного ребра, взлом завершается провалом. Если ИИ не может выбрать ребро, исходящее из
вершины, в которой находится его токен, на котором написан символ c, взлом завершается успешно.
Также, возможна ситуация, в которой Ви и ИИ будут делать ходы бесконечно долго.
Ви определить количество стартовых состояний, то есть пар вершин v и u, при которых
взлом будет произведен успешно при оптимальных действиях Ви и ИИ.
Формат входных данных
В первой строке даны два целых числа n и m — количество вершин и ребер в графе (1 6 n 6 1 000,
0 6 m 6 1 000).
В следующих m строках дано описание ребер графа. Каждая строка содержит два целых числа
ai и bi и строчную букву английского алфавита ci
, они обозначают ребро из вершины ai в вершину
bi
, на котором написан символ ci (1 6 ai
, bi 6 n).
Формат выходных данных
Выведите одно число — искомое количество стартовых состояний.
Система оценки
за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи
и необходимых подзадач успешно пройдены.
Подзадача Ограничения Необходимые
подзадачи
Информация
о проверке
1 12 n, m 6 10 первая ошибка
2 21 n, m 6 100 1 первая ошибка
3 22 ci = ‘a’ первая ошибка
4 22 Граф является ациклическим первая ошибка
5 23 Без дополнительных ограничений 1–4 первая ошибка
Примеры
стандартный ввод стандартный вывод
3 3
1 2 a
2 3 b
3 1 c
6
5 10
2 2 c
3 5 b
5 4 b
2 3 b
3 5 c
3 1 b
4 2 a
4 4 a
2 4 b
2 5 c
15
Замечание
В первом примере, если изначально токены Ви и ИИ стоят в одной и той же вершине, процесс
никогда не завершится. Во всех остальных случаях, взлом будет успешным.

Показать ответ
Ответ:
qqqqq9
qqqqq9
28.06.2021 16:35

#include "stdafx.h"

#include <stdio.h>//i/o

#include <conio.h> //_getch()

#include <ctype.h> //toupper

 

int main()

 

{

   long i,n;

   float cost, p,buf;

   do

   {

       printf("Vvedite pervonachalnuy stoimost : ");scanf_s("%f",&cost);

       printf("Vvedite procent p %  : ");scanf_s("%f",&p);

       printf("Vvedite n chisl Let : ");scanf_s("%u",&n);

       for(i = 0; i < n; i++)

       {

           printf("Let %u\r\n",i + 1);

           buf = cost*p/100;

           printf("Stoimost za zimmu + : %f\r\n",(cost += buf));

           buf = cost*p/100;

           printf("Stoimost za zimmu -: %f\r\n",(cost -= buf));

       }

       printf("Stoimost %u Let %f\r\n",i,cost);

       printf("Najmite Y - new input\r\n");

   }

   while(toupper(_getch()) == 'Y');

   return 0;

}

0,0(0 оценок)
Ответ:
LyudaDolina
LyudaDolina
26.06.2021 17:35
1) F=Av(¬A&B)
По закону дистрибутивности раскроем скобки
(Av¬A)&(AvB)
Av¬A = 1, значит остаётся AvB

2) F =A&(¬AvB)
По тому же закону раскрываем скобки
(A&¬A)v(A&B)
A&¬A = 0, значит остаётся A&B

3. (AvB)&(¬BvA)&(¬CvB)
По закону склеивания (AvB)&(¬BvA) = A , получается, что выражение принимает вид
A&(¬CvB)
Можно раскрыть скобки, получим
A&¬C v A&B

4) F =(1v(AvB))v((AC)&1) 
Скобка (1v(AvB)) = 1, так как 1 v ЧТОУГОДНО = 1
Получаем выражение
1v((AC)&1) = 1, так как 1 v ЧТОУГОДНО = 1
ответ 1
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота