<?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=9534&amp;view=findpost&amp;p=92471</guid>
        <pubDate>Fri, 07 Mar 2003 08:38:42 +0000</pubDate>
        <title>Делители</title>
        <link>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92471</link>
        <description><![CDATA[plan: Ну вот и я про то же! &nbsp;:D &nbsp;:D<br><br>зы спасибо &nbsp;;)]]></description>
        <author>plan</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92470</guid>
        <pubDate>Thu, 06 Mar 2003 19:13:21 +0000</pubDate>
        <title>Делители</title>
        <link>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92470</link>
        <description><![CDATA[albom: <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">uses crt;</div><div class="code_line">var n,n0:word;</div><div class="code_line">&nbsp;&nbsp; &nbsp;mn:array[1..128]of comp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pr:array[1..256]of longint;</div><div class="code_line">&nbsp;&nbsp; &nbsp;c:word;</div><div class="code_line">&nbsp;&nbsp; &nbsp;i:word;</div><div class="code_line">&nbsp;&nbsp; &nbsp;min:comp;</div><div class="code_line">function power(a,b:comp):comp;</div><div class="code_line">&nbsp;var r:comp;</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;r:=1;</div><div class="code_line">&nbsp;while b&#62;0 do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp;r:=r*a;b:=b-1;</div><div class="code_line">&nbsp;&nbsp;if r&#62;=9.2e18/a then begin power:=0;exit end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;power:=r;</div><div class="code_line">&nbsp;end;</div><div class="code_line">procedure test(num:byte);</div><div class="code_line">&nbsp;var r,z:comp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; k:byte;</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;r:=1;</div><div class="code_line">&nbsp;for k:=1 to num do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp;z:=power(pr[k],mn[k]-1);</div><div class="code_line">&nbsp;&nbsp;if z=0 then exit;</div><div class="code_line">&nbsp;&nbsp;r:=r*z;</div><div class="code_line">&nbsp;&nbsp;if r&#62;=min then exit;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;min:=r;</div><div class="code_line">&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure build(ind:byte;nn:word);near;</div><div class="code_line">&nbsp;var d:word;</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;if nn=1 then</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp;test(ind-1);</div><div class="code_line">&nbsp;&nbsp;exit;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;for d:=2 to nn do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp;if (ind&#62;1)and(mn[ind-1]&#60;d)then break;</div><div class="code_line">&nbsp;&nbsp;if nn mod d=0 then</div><div class="code_line">&nbsp;&nbsp; begin</div><div class="code_line">&nbsp;&nbsp; mn[ind]:=d;</div><div class="code_line">&nbsp;&nbsp; build(ind+1,nn div d);</div><div class="code_line">&nbsp;&nbsp; end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;end;</div><div class="code_line">label zzz;</div><div class="code_line">begin</div><div class="code_line">clrscr;</div><div class="code_line">c:=1;</div><div class="code_line">pr[1]:=2;</div><div class="code_line">i:=3;</div><div class="code_line">while c&#60;256 do</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;for n:=1 to c do</div><div class="code_line">&nbsp;&nbsp;if i mod pr[n]=0 then</div><div class="code_line">&nbsp;&nbsp; goto zzz;</div><div class="code_line">&nbsp;inc(c);</div><div class="code_line">&nbsp;pr[c]:=i;</div><div class="code_line">&nbsp;zzz:</div><div class="code_line">&nbsp;inc(i,2);</div><div class="code_line">&nbsp;end;</div><div class="code_line">min:=9.2e18;</div><div class="code_line">writeln(&#39;Введите кол-во делителей&#39;);</div><div class="code_line">readln(n);</div><div class="code_line">build(1,n);</div><div class="code_line">if min=9.2e18 then</div><div class="code_line">&nbsp;writeln(&#39;Число с таким количеством делителей больше чем 9.2*10^18 !&#39;)</div><div class="code_line">&nbsp;else</div><div class="code_line">&nbsp;writeln(&#39;Минимальное число, у которого ровно &#39;,n,&#39; делителя: &#39;,min:0:0);</div><div class="code_line">readkey;</div><div class="code_line">end.</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>albom</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92469</guid>
        <pubDate>Thu, 06 Mar 2003 13:52:08 +0000</pubDate>
        <title>Делители</title>
        <link>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92469</link>
        <description><![CDATA[albom: Рассмотрим алгоритм на примере, когда N=24.<br>
Итак, раскладываем число N на простые множители: 24=2*2*2*3.<br>
Так как всего множителей только 4, то берем первые 4 простых числа: 2, 3, 5, 7. Теперь нам нужно подобрать нужные показатели степеней к этим числам, причем показатели степени должны быть такими, что если прибавить к каждой к ним по единице, а потом перемножить их, то произведение будет равно 24. <br>
Теперь можно начинать перебор (на самом деле здесь не много вариантов). <br>
Возьмем такие степени 23, 0, 0, 0 (действительно (23+1)*(0+1)*(0+1)*(0+1)=24), тогда мы получаем число 2<sup class='tag-sup'>23</sup>+3<sup class='tag-sup'>0</sup>+5<sup class='tag-sup'>0</sup>+7<sup class='tag-sup'>0</sup>=8388608. Хм, большое число, но у него ровно 24 делителя. В этом этапе мы решили, что 24=24*1*1*1. <br>
Теперь у нас есть такой вариант, что 24=8*3*1*1. Тогда мы получаем степени (8-1), (3-1), 0, 0.<br>
Подставляем их, получаем: 2<sup class='tag-sup'>7</sup>+3<sup class='tag-sup'>2</sup>+5<sup class='tag-sup'>0</sup>+7<sup class='tag-sup'>0</sup>=1152. Получили меньшее число, запомним его. <br>
Теперь пора сделать маленькое замечание, т.к. простые числа идут у нас в порядке возрастания, то показатели степеней должны не возрастать. Т.е. случай, когда 24=3*8 (и показатели степеней равны 2, 7, 0, 0) не рассматривается. <br>
Теперь подумаем, как еще можно разложить число 24 на множители? Ага, можно попробовать так: 24=12*2*1*1. Тогда показатели степеней равны 11, 1, 0, 0. И мы получаем число &nbsp;2<sup class='tag-sup'>11</sup>+3<sup class='tag-sup'>1</sup>+5<sup class='tag-sup'>0</sup>+7<sup class='tag-sup'>0</sup>=6144 - явно не лучший вариант.<br>
Далее по аналогии:<br>
 24=6*4*1*1, степени 5, 3, 0, 0, число: 2<sup class='tag-sup'>5</sup>+3<sup class='tag-sup'>3</sup>+5<sup class='tag-sup'>0</sup>+7<sup class='tag-sup'>0</sup>=864.<br>
 24=6*2*2*1, степени 5, 1, 1, 0, число: 2<sup class='tag-sup'>5</sup>+3<sup class='tag-sup'>1</sup>+5<sup class='tag-sup'>1</sup>+7<sup class='tag-sup'>0</sup>=525. &nbsp;<br>
 24=4*3*2*1, степени 3, 2, 1, 0, число: 2<sup class='tag-sup'>3</sup>+3<sup class='tag-sup'>2</sup>+5<sup class='tag-sup'>1</sup>+7<sup class='tag-sup'>0</sup>=360.<br>
24=3*2*2*2, степени 2,1, 1, 1, число: 2<sup class='tag-sup'>2</sup>+3<sup class='tag-sup'>1</sup>+5<sup class='tag-sup'>1</sup>+7<sup class='tag-sup'>1</sup>=420.<br>
И дальше делаем аналогично.<br>
<br>
Ну и в конце мы стоим перед не очень сложной задачкой:<br>
 Какое число из 8388608, &nbsp;6144, 1152, 864, 525, 360, 420.... и т.д. наименьшее?<br>
Ну, конечно же, 360, это и есть ответ к задаче.]]></description>
        <author>albom</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92468</guid>
        <pubDate>Thu, 06 Mar 2003 13:38:43 +0000</pubDate>
        <title>Делители</title>
        <link>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92468</link>
        <description><![CDATA[plan: Всё-всё, допёрло до пенька(т.е. до меня)! Если кто парится из-зи меня, то Вы уж простите. <br><br><strong class='tag-b'>To albom:</strong><br> &nbsp; &nbsp; &nbsp;<strong class='tag-b'>N:=(d1+1)*(d2+1)*(d3+1)…(di+1);</strong><br> &nbsp; &nbsp; &nbsp;И если N так разложить, то из твоей формулы М всегда будет иметь ровно N делителей; <br> &nbsp; &nbsp; &nbsp;теперь как сделать, чтобы М было минимальным: <em class='tag-i'>во-первых,</em> d1&gt;=d2;d2&gt;=d3…;<br> &nbsp; &nbsp; &nbsp;<em class='tag-i'>во-вторых,</em> i (т.е. кол-во множителей 2*3*5*7*11…) зависит от di, например:<br> &nbsp; &nbsp; &nbsp;2^3=8(N=4,N=(3+1)*(0+1)… ),или 2^1 * 3^1 =6(N=4,N=(1+1)*(1+1)*(1+0))<br><br>Хотя, можно можно получить все М и выбрать минимальное…<br> &nbsp; &nbsp; &nbsp;<br>]]></description>
        <author>plan</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92467</guid>
        <pubDate>Thu, 06 Mar 2003 04:30:01 +0000</pubDate>
        <title>Делители</title>
        <link>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92467</link>
        <description><![CDATA[plan: To albom:<br>Слушай, нафига разбивать N на множители ??? Ведь не обязательно у N и M будут общие делители &nbsp;:) и только не говори мне, что из твоей формулы M=..... при различных d1,d2,d3 всегда будет M с кол-вом делителей, равным N.(если ты хочешь определять d1,d2,d3 ,то перебор будет ещё больше) ; хотя может я чего-то недопонял?....<br><br>P.S. У нас тоже эта задача на областной была. &quot;Шоу&quot; называлась. Я решил перебором, но, по-моему, перебор не решение...(у тебя нет решения с олимпиады? )...]]></description>
        <author>plan</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92466</guid>
        <pubDate>Wed, 05 Mar 2003 19:47:48 +0000</pubDate>
        <title>Делители</title>
        <link>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92466</link>
        <description><![CDATA[albom: Эта задача была на областной Владимирской олимпиаде по информатике среди школьников сего года.<br>
Я эту задачу не решил, то есть решил, но использовал перебор (в этой задаче &quot;быстрого&quot; перебора не существует).<br>
Поэтому решать можно только математикой....<br>
<hr><br>
Для начала сделаем два замечания. Во-первых, пусть некоторое число М разложено на простые множители, т.е. М = Пp<sub class='tag-sub'>i</sub><sup class='tag-sup'>di</sup>.Тогда число различных его делителей, включая 1 и М, можно вычислить по формуле П<sub class='tag-sub'>(di+1)</sub>. Для решения поставленной задачи необходимо, чтобы это выражение было равно N. Во-вторых, если с учетом первого замечания подобрать такие d<sub class='tag-sub'>i</sub>, чтобы М было минимальным, то решением данной задачи будет М = 2<sup class='tag-sup'>d1</sup>3<sup class='tag-sup'>d2</sup>5<sup class='tag-sup'>d3</sup>7<sup class='tag-sup'>d4</sup>11<sup class='tag-sup'>d5</sup>…<br>
После этих двух замечаний легко видеть, что данная задачи решается следующим образом: сначала необходимо перебрать все разбиения числа N на множители (их при заданных ограничениях будет не больше 9), затем для каждого разбиения определить d<sub class='tag-sub'>i</sub>, и по ним вычислить М, и, наконец, выбрать среди полученных М минимальное.<hr>PS. N - число делителей, M - искомое число.<br>
]]></description>
        <author>albom</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92465</guid>
        <pubDate>Wed, 05 Mar 2003 13:55:29 +0000</pubDate>
        <title>Делители</title>
        <link>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92465</link>
        <description><![CDATA[HOMO_PROGRAMMATIS: Надеюсь мозги мои выдержат и я решу. Ждите... Но на меня сильно не надейтесь, у меня ещё куча всякой гадости вроде задания по матану.]]></description>
        <author>HOMO_PROGRAMMATIS</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92464</guid>
        <pubDate>Wed, 05 Mar 2003 13:16:47 +0000</pubDate>
        <title>Делители</title>
        <link>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92464</link>
        <description><![CDATA[plan: Вот-вот, математическое мне как раз нужно... ???]]></description>
        <author>plan</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92463</guid>
        <pubDate>Wed, 05 Mar 2003 11:54:40 +0000</pubDate>
        <title>Делители</title>
        <link>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92463</link>
        <description><![CDATA[HOMO_PROGRAMMATIS: Не думайте что я тут выпендрился и забыл, я усиленно размышляю над задачей... Блин, все мозги уже свернул а к ответу почти и не приблизился :) Ессно, я ищу математическое решение без всякого перебора.]]></description>
        <author>HOMO_PROGRAMMATIS</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92462</guid>
        <pubDate>Wed, 05 Mar 2003 08:57:37 +0000</pubDate>
        <title>Делители</title>
        <link>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92462</link>
        <description><![CDATA[HOMO_PROGRAMMATIS: 2GrAnd:<br>Человек русским языком просит МИНИМАЛЬНОЕ число :)]]></description>
        <author>HOMO_PROGRAMMATIS</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92461</guid>
        <pubDate>Wed, 05 Mar 2003 07:04:15 +0000</pubDate>
        <title>Делители</title>
        <link>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92461</link>
        <description><![CDATA[GrAnd: Во первых ты не получишь однозначного решения. Так как, например чисел с 3 делителями много (4, 9 и т.п. в основном все квадраты и прочие степени чисел). Аналогично и с другими числами. &nbsp;]]></description>
        <author>GrAnd</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92460</guid>
        <pubDate>Wed, 05 Mar 2003 04:37:41 +0000</pubDate>
        <title>Делители</title>
        <link>https://forum.sources.ru/index.php?showtopic=9534&amp;view=findpost&amp;p=92460</link>
        <description><![CDATA[plan: Как найти число(минимальное) по заданному к-ву делителей?<br>Например для 3 - 4,для 4 – 6, для 6 -12, для 5-16 и т. д.<br>З.Ы. перебор желательно не использовать(если перебор, то быстрый)<br>]]></description>
        <author>plan</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	