<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416887&amp;view=findpost&amp;p=3821748</guid>
        <pubDate>Fri, 21 Feb 2020 20:16:18 +0000</pubDate>
        <title>Перебор всех вариантов (сочетание ног насекомых)</title>
        <link>https://forum.sources.ru/index.php?showtopic=416887&amp;view=findpost&amp;p=3821748</link>
        <description><![CDATA[Akina: Да я вообще не понимаю твоей заморочки по оптимизации учебной задачи с жёстко фиксированным (применение которого в данном конкретном случае есть явный [censored]) алгоритмом.]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416887&amp;view=findpost&amp;p=3821716</guid>
        <pubDate>Fri, 21 Feb 2020 13:58:23 +0000</pubDate>
        <title>Перебор всех вариантов (сочетание ног насекомых)</title>
        <link>https://forum.sources.ru/index.php?showtopic=416887&amp;view=findpost&amp;p=3821716</link>
        <description><![CDATA[FasterHarder: тут с К все ок<br>из условия следует, что x, y, K - натуральные числа<br><br>вот, что делать с 11.5 милл.переборов (в худшем случае), хотя может это и  не критично. Прогнал проггу на десятках миллионах N, результат появился сразу (там что-то получилось насекомых 235 000).]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416887&amp;view=findpost&amp;p=3821707</guid>
        <pubDate>Fri, 21 Feb 2020 12:11:56 +0000</pubDate>
        <title>Перебор всех вариантов (сочетание ног насекомых)</title>
        <link>https://forum.sources.ru/index.php?showtopic=416887&amp;view=findpost&amp;p=3821707</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416887&view=findpost&p=3821702'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-02-21T10:43:01+00:00">21.02.20, 10:43</time></span><div class='quote '><br>
        // наличие хотя бы одного жука и 1 паука гарантировано</div></div><br>
Для этого достаточно ненулевого K. Если жуков ноль - К не существует (деление на ноль), если пауков ноль, то К=0.<br>
<br>
При условии, что решение существует, конечно...]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416887&amp;view=findpost&amp;p=3821702</guid>
        <pubDate>Fri, 21 Feb 2020 10:43:01 +0000</pubDate>
        <title>Перебор всех вариантов (сочетание ног насекомых)</title>
        <link>https://forum.sources.ru/index.php?showtopic=416887&amp;view=findpost&amp;p=3821702</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416887&view=findpost&p=3821700'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2020-02-21T09:46:38+00:00">21.02.20, 09:46</time></span><div class='quote '>к примеру, можешь перебрать все возможные количества жуков, от нуля и до того, как число ног у жуков будет больше N.</div></div><br>
я, кажись, понял, да, действительно, достаточно запустить лишь цикл по одним насекомым, а вторых искать в зависимости от первых...<br>
только НЕ от НУЛЯ, а от 1, т к кол-во ног насекомых - натуральные...ноги1 * K = ноги2<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416887&view=findpost&p=3821700'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2020-02-21T09:46:38+00:00">21.02.20, 09:46</time></span><div class='quote '>Если задача решается, значит все частные ОБЯЗАНЫ быть целыми.</div></div><br>
да, согласен, дробные &quot;ноги&quot; не рассматриваем, хотя еще подумаю потщательнее этот момент...<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416887&view=findpost&p=3821700'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2020-02-21T09:46:38+00:00">21.02.20, 09:46</time></span><div class='quote '>Ну и N должно нацело делиться на 6*(K + 1) </div></div><br>
это я закладывал и понимаю, просто не стал писать, т к это не влияет на кол-во переборов, просто, если не делится, то сразу ответ 0.<br>
<br>
в общем, вроде понятно, спс <strong class='tag-b'>amk</strong>&#33;<br>
<br>
P.S. еще были мысли, что нужно что-то мутить с разложением на простые делители N, K и пр., но ведать не придется, ну и хорошо&#33; <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-02-21T11:10:12+00:00">21.02.20, 11:10</time></span></span><br>
вот прожка на с++, вроде все ОКейно&#33;<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">using namespace std;</div><div class="code_line">&nbsp;</div><div class="code_line">int main(void)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;long long K, N;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long long result = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cin &#62;&#62; N &#62;&#62; K;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(N % (6*K + 6) == 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// наличие хотя бы одного жука и 1 паука гарантировано</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for(long long x = 1; 6*x + 8 &#60;= N; x++)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if((6*x + 6*x*K) == N)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result = x + 6*x*K/8;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; endl &#60;&#60; result &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;fflush(stdin);</div><div class="code_line">&nbsp;&nbsp; &nbsp;cin.get();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
т е предельное число переборов составляет (N - 8)/6. Кстати, N может на входе достигать 100 миллионов...(100 млн - 8)/6 примерно 11.5 млн переборов. Много это или мало, а черт его знает...но кажется, что многовато и нужна еще какая-то оптимизация.]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416887&amp;view=findpost&amp;p=3821700</guid>
        <pubDate>Fri, 21 Feb 2020 09:46:38 +0000</pubDate>
        <title>Перебор всех вариантов (сочетание ног насекомых)</title>
        <link>https://forum.sources.ru/index.php?showtopic=416887&amp;view=findpost&amp;p=3821700</link>
        <description><![CDATA[amk: Ну, к примеру, можешь перебрать все возможные количества жуков, от нуля и до того, как число ног у жуков будет больше N.<br>Далее подсчитываешь число ног жуков и пауков (6x и 6x*K) и сравниваешь их сумму с N. В принципе, если на этот момент суммарное число ног превысит N, то задача не сходится.<br><br>И кстати, в твоём решении незачем брать натуральные снизу. Если задача решается, значит все частные ОБЯЗАНЫ быть целыми.<br>Ну и N должно нацело делиться на 6*(K + 1)]]></description>
        <author>amk</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416887&amp;view=findpost&amp;p=3821697</guid>
        <pubDate>Fri, 21 Feb 2020 08:44:38 +0000</pubDate>
        <title>Перебор всех вариантов (сочетание ног насекомых)</title>
        <link>https://forum.sources.ru/index.php?showtopic=416887&amp;view=findpost&amp;p=3821697</link>
        <description><![CDATA[FasterHarder: Всем хай&#33; Сходу к делу&#33;<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="blue" style="color: blue">Условие задачи следующее: на берегу океана сидят и курят жуки и пауки, у которых вместе N ног. У каждого жука по 6 ног, а паука - 8 ног. Известно, что ног у всех жуков в К раз меньше, чем у всех пауков.<br>
Сколько всего жуков и пауков находится на берегу океана? N и К - натуральные числа. Если решений нет - выдать ответ ноль.</span></strong><br>
<br>
строим мат.модель&#33;<br>
х - кол-во жуков, y - кол-во пауков<br>
6х - всего ног у всех жуков<br>
8y - всего ног у всех пауков<br>
<br>
6x + 8y = N   (1 необходимое условие)<br>
6x * K = 8y   (2 необходимое условие)<br>
<br>
6x + 6x*K = N<br>
6x(1 + K) = N<br>
x = N / (6 + 6K)<br>
все, ГОТОВО. Данное уравнение имеет однозначное решение (если будет натуральное Х) иначе - нет решения.<br>
Проверим, пусть N = 360, K = 2.<br>
x = 360 / (6*3) = 360 / 18 = 20<br>
y = 6*20*2/8 = 30<br>
Итого: 20 + 30 = 50<br>
<br>
<span class="tag-color tag-color-named" data-value="purple" style="color: purple">но есть одно НО(&#33;), нужно решить задачу МЕТОДОМ ПОЛНОГО ПЕРЕБОРА.</span><br>
Что перебирать? ну, наверное {x, y}.<br>
Какие допустимые значения перебора х и y? Очевидно, что X(min) = Y(min) = 1.<br>
Нужно делать оценку допустимости X(max), Y(max).<br>
X(max) будет макс. при минимальном Y = 1.<br>
6*X(max) + 8 = N<br>
X(max) &lt;= (N - 8)/6 - берем ближайшее натуральное снизу.<br>
<br>
Y(max) будем макс. при минимальном X = 1.<br>
6 + 8*Y(max) = N<br>
Y(max) &lt;= (N - 6)/8 - берем ближайшее натуральное снизу.<br>
<br>
В итоге получаются такие переборы, да?<br>
for(x = 1 to X(max))<br>
  for(y = 1 to Y(max))<br>
     здесь подставляем текущие {x; y} в ОБА условия. Если выполнилось - ответ найден. Дальше можно не проверять, т к решение единственное (если оно есть)<br>
<br>
<span class="tag-color tag-color-named" data-value="purple" style="color: purple">но есть еще одно НО(&#33;), при возможности, нужно сократить варианты переборов (не до единственного).</span><br>
и вот у меня вопрос, здесь за счет чего варианты перебора можно сократить??<br>
<br>
добавить в эти циклы проверку<br>
for(x = 1 to X(max))<br>
  for(y = 1 to Y(max))<br>
    if(6x * K &#33;= 8Y)  // дальше не считаем<br>
но вроде это НЕ сокращает варианты перебора...значения x, y также бегают от 1 до (max).<br>
<br>
Очень простая задача с очень странными требованиями решения через полный перебор, да, понимаю)<br>
подскажите как быть-то]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	