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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
#1

Олимпиадная задача "Замок" - C++

10.11.2012, 12:10. Просмотров 1086. Ответов 3
Метки нет (Все метки)

Намекните, как решать эту задачу. Готовлюсь к олимпиаде по информатике, и попалась очень сложная для меня задача. Помогите, пожалуйста!!!

Задача A. Замок
Замок имеет форму большого квадрата, составленного из N × N маленьких квадратиков. Внеш-
ние квадратики являются башнями, именно они играют основную роль в защите замка от неприяте-
ля. Например, если замок имеет размер 4×4, то у него 12 башен (смотрите второй рисунок, башни
на нем выделены серым цветом).
Замок охраняет K полков, которые необходимо разместить по башням. В одной башне можно
разместить несколько полков, но при этом в каждой башне должен находиться хотя бы один полк,
иначе неприятель легко захватит эту башню. Если все башни защищены, то неприятель выбирает
для атаки одну из четырех сторон замка, которую защищает наименьшее число полков (то есть
суммарное число полков во всех башнях данной стороны квадрата минимально).
Определите, как нужно разместить полки для наилучшей защиты замка.

Формат входных данных
Первая строка входных данных содержит число N  (размер замка) (2 <= N <= 100). Вторая строка
входных данных содержит число K  количество полков, охраняющих замок (0 <= K >= 100).

Формат выходных данных
Выведите единственное число  количество полков на наименее укрепленной стороне замка при
наилучшем размещении полков. Если имеющихся полков недостаточно для защиты всех башен,
выведите число 0.

Примеры
ввод 5 15

вывод 5

примечание
Можно расположить полки так, что
каждую сторону будет защищать 5 полков.
Защитить каждую сторону не менее, чем
шестью полками не удастся

Добавлено через 18 часов 28 минут
Может, нужно создавать двумерный массив?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2012, 12:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Олимпиадная задача "Замок" (C++):

Даны три слова - "мама", "мыла", "раму". Задача - напечатать всевозможные варианты построения слов - C++
Я записал код, однако эту часть надо автоматизировать, поможете? КОД: } #include &lt;iostream&gt; using namespace std; int main()...

Необработанное исключение в "0x76f015de" в "контрольная 1 задача 2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x334e2c64" - C++
доброго времени суток. Необработанное исключение в &quot;0x76f015de&quot; в &quot;контрольная 1 задача 2.exe&quot;: 0xC0000005: Нарушение прав доступа при...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Олимпиадная задачка на графы "Юный поджигатель" - C++
Достаточно распространенная олимпиадная задачка &quot;Юный поджигатель&quot;. Может у кого завалялся код на C++? Юный поджигатель Имя входного...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
10.11.2012, 12:56 #2
Идеи решения у тебя есть?


Не по теме:

Цитата Сообщение от лыс Посмотреть сообщение
Может, нужно создавать двумерный массив?
Кошмар...

0
alex_289
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 12
10.11.2012, 14:51 #3
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
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
    int N=0;
    int K=0;
    int T=0;
    int tower=0;
     cout<<"enter size of tower[2-100]: ";
     cin>>N;
     cout<<"enter size of army[0-100]: ";
     cin>>K;
     tower=pow(N,2)-pow((N-2),2);
     if(tower>K)
        cout<<"army is to small"<<endl;
    else
     {
     T=(K/tower)*N;
     cout<<"Minimal: "<<T;
     }
    return 0;
}
0
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
10.11.2012, 15:11  [ТС] #4
Спасибо большое, очень помогли.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2012, 15:11
Привет! Вот еще темы с ответами:

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

"Олимпиадная задачка" - C++
Напишите программу, которая в последовательности натуральных чисел определяет минимальное число, оканчивающееся на 4. Программа...


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

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

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