<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://felipetonello.com/blog/wp-atom.php">
	<title type="text">Felipe Tonello</title>
	<subtitle type="text">Compartilhe, ajude e cresça</subtitle>

	<updated>2010-07-29T20:35:37Z</updated>

	<link rel="alternate" type="text/html" href="http://felipetonello.com/blog" />
	<id>http://felipetonello.com/blog/feed/atom/</id>
	

	<generator uri="http://wordpress.org/" version="3.0.1">WordPress</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/chackalsjc" /><feedburner:info uri="chackalsjc" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><logo>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</logo><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fchackalsjc" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fchackalsjc" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fchackalsjc" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/chackalsjc" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fchackalsjc" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fchackalsjc" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fchackalsjc" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><entry>
		<author>
			<name>Felipe Tonello</name>
						<uri>http://felipetonello.com</uri>
					</author>
		<title type="html"><![CDATA[looong #fail no GCC]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/chackalsjc/~3/2Ow0opOYkNA/" />
		<id>http://felipetonello.com/blog/?p=313</id>
		<updated>2010-07-29T20:35:37Z</updated>
		<published>2010-07-29T17:34:25Z</published>
		<category scheme="http://felipetonello.com/blog" term="C" /><category scheme="http://felipetonello.com/blog" term="Diversos" /><category scheme="http://felipetonello.com/blog" term="Nerd" /><category scheme="http://felipetonello.com/blog" term="diversão" />		<summary type="html"><![CDATA[O uso do long long como tipo de dado foi introduzido no padrão ISO C99. Isso acabou gerando uma revolta na comunidade acadêmica que achava o cúmulo ter de usar long long ao invéz de um nome específico, argumentando &#8220;qual será a próxima? long long long, long long long long &#8230; &#8220;. Bom, o que [...]]]></summary>
		<content type="html" xml:base="http://felipetonello.com/blog/2010/07/29/looong-fail-no-gcc/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dCv7NqNiEPbX7l-OoQU9hANJ7cw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dCv7NqNiEPbX7l-OoQU9hANJ7cw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dCv7NqNiEPbX7l-OoQU9hANJ7cw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dCv7NqNiEPbX7l-OoQU9hANJ7cw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;O uso do &lt;strong&gt;long long&lt;/strong&gt; como tipo de dado foi introduzido no padrão ISO C99. Isso acabou gerando uma revolta na comunidade acadêmica que achava o cúmulo ter de usar long long ao invéz de um nome específico, argumentando &lt;em&gt;&amp;#8220;qual será a próxima? long long long, long long long long &amp;#8230; &amp;#8220;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Bom, o que parece é que o pessoal do GCC também não foi muito com a cara desse long long não.&lt;/p&gt;
&lt;div id="attachment_314" class="wp-caption alignnone" style="width: 484px"&gt;&lt;a href="http://felipetonello.com/blog/wp-content/uploads/2010/07/long.jpg"&gt;&lt;img class="size-full wp-image-314 " title="long long long no gcc" src="http://felipetonello.com/blog/wp-content/uploads/2010/07/long.jpg" alt="long long long no gcc" width="474" height="177" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text"&gt;long long long #fail no gcc&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;#FAIL para a ISO C99 ou pro GCC? Fica a dúvida.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=2Ow0opOYkNA:-o6mcKBWgj0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=2Ow0opOYkNA:-o6mcKBWgj0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=2Ow0opOYkNA:-o6mcKBWgj0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=2Ow0opOYkNA:-o6mcKBWgj0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?i=2Ow0opOYkNA:-o6mcKBWgj0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=2Ow0opOYkNA:-o6mcKBWgj0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=2Ow0opOYkNA:-o6mcKBWgj0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/chackalsjc/~4/2Ow0opOYkNA" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://felipetonello.com/blog/2010/07/29/looong-fail-no-gcc/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://felipetonello.com/blog/2010/07/29/looong-fail-no-gcc/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://felipetonello.com/blog/2010/07/29/looong-fail-no-gcc/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Felipe Tonello</name>
						<uri>http://felipetonello.com</uri>
					</author>
		<title type="html"><![CDATA[Problema 3n + 1 no UVa]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/chackalsjc/~3/ruD70LNE0zQ/" />
		<id>http://felipetonello.com/blog/?p=262</id>
		<updated>2010-06-09T18:08:39Z</updated>
		<published>2010-06-09T04:28:44Z</published>
		<category scheme="http://felipetonello.com/blog" term="Algoritmos" /><category scheme="http://felipetonello.com/blog" term="Artigos" /><category scheme="http://felipetonello.com/blog" term="C" /><category scheme="http://felipetonello.com/blog" term="desafios" /><category scheme="http://felipetonello.com/blog" term="Matemática" />		<summary type="html"><![CDATA[Esse é um dos problemas mais simples que tem no UVa mas ao mesmo tempo é muito interessante. O problema 3n + 1, também chamado de Conjectura de Collatz, é um problema da matemática que nunca foi resolvido. Basicamente é o seguinte: Se o número é par, então divida por dois. Se o número é ímpar, [...]]]></summary>
		<content type="html" xml:base="http://felipetonello.com/blog/2010/06/09/problema-3n-1-no-uva/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MVUZHDQb45BddZ0AldkkKjufGrU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MVUZHDQb45BddZ0AldkkKjufGrU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MVUZHDQb45BddZ0AldkkKjufGrU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MVUZHDQb45BddZ0AldkkKjufGrU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Esse é um dos problemas mais simples que tem no UVa mas ao mesmo tempo é muito interessante. O &lt;a title="The 3n + 1 problem no UVa" href="http://uva.onlinejudge.org/index.php?option=com_onlinejudge&amp;amp;Itemid=8&amp;amp;category=29&amp;amp;page=show_problem&amp;amp;problem=36"&gt;problema 3n + 1&lt;/a&gt;, também chamado de &lt;a title="Collatz conjecture" href="http://en.wikipedia.org/wiki/Collatz_conjecture"&gt;Conjectura de Collatz&lt;/a&gt;, é um problema da matemática que nunca foi resolvido.&lt;/p&gt;
&lt;p&gt;Basicamente é o seguinte:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se o número é par, então divida por dois.&lt;/li&gt;
&lt;li&gt;Se o número é ímpar, então multiplique por três e some por um.&lt;/li&gt;
&lt;li&gt;&lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_e8b68fc7245bcafe5083d2a67633c0aa.png" align="absmiddle" class="tex" alt="f(n) = \begin{cases} n/2 &amp;amp;\mbox{se } n \equiv 0 \pmod{2}\\ 3n+1 &amp;amp; \mbox{se } n\equiv 1 \pmod{2} \end{cases}" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agora que temos a função definida, vamos realizar essa operação repetidamente, começando com um inteiro positivo e depois usando o resultado em cada passo:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_9c0ffc5ad934a56cc5901a45b4563abc.png" align="absmiddle" class="tex" alt="a_i = \begin{cases}n &amp;amp; \mbox{para } i = 0 \\ f(a_{i-1}) &amp;amp; \mbox{para } i &amp;gt; 0. \end{cases}" /&gt;&lt;/p&gt;
&lt;p&gt;O interessante é que essa seqüência parece sempre resultar em &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_f07b42bd953c13cc8a80408ac049d7d2.png" align="absmiddle" class="tex" alt="a_i = 1" /&gt;.&lt;/p&gt;
&lt;h2&gt;Programando&lt;/h2&gt;
&lt;p&gt;O &lt;a href="http://uva.onlinejudge.org/external/1/100.html"&gt;desafio enunciado no UVa Online Judge&lt;/a&gt; pede para se contar o maior número de &lt;a href="http://en.wikipedia.org/wiki/Collatz_conjecture#m-cycles"&gt;m-cíclos&lt;/a&gt; em um determinado intervalo de inteiros &lt;em&gt;n, m&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Como eu gosto de coisas simples, fiz um algoritmo em C bem simples. Não recomendo &lt;a title="3n + 1 em C++" href="http://www.lukejduncan.com/2009/08/uva---100---3n1-problem.php"&gt;algoritmo complexos&lt;/a&gt;.&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="c" style="font-family:monospace;"&gt;&lt;span style="color: #339933;"&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #993333;"&gt;int&lt;/span&gt; collatz&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #993333;"&gt;int&lt;/span&gt; n&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
	&lt;span style="color: #993333;"&gt;int&lt;/span&gt; i &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
	&lt;span style="color: #b1b100;"&gt;while&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;n &lt;span style="color: #339933;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
		&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;n &lt;span style="color: #339933;"&gt;%&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;2&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #339933;"&gt;!=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;
			n &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;3&lt;/span&gt;&lt;span style="color: #339933;"&gt;*&lt;/span&gt;n&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
		&lt;span style="color: #b1b100;"&gt;else&lt;/span&gt;
			n &lt;span style="color: #339933;"&gt;=&lt;/span&gt; n&lt;span style="color: #339933;"&gt;/&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;2&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
		&lt;span style="color: #339933;"&gt;++&lt;/span&gt;i&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
	&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
	&lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; i&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #993333;"&gt;int&lt;/span&gt; main &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #993333;"&gt;int&lt;/span&gt; argc&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #993333;"&gt;char&lt;/span&gt; &lt;span style="color: #993333;"&gt;const&lt;/span&gt; &lt;span style="color: #339933;"&gt;*&lt;/span&gt;argv&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
	&lt;span style="color: #993333;"&gt;int&lt;/span&gt; i&lt;span style="color: #339933;"&gt;,&lt;/span&gt; j&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
	&lt;span style="color: #b1b100;"&gt;while&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;scanf&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;%d %d&amp;quot;&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&lt;/span&gt;i&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&lt;/span&gt;j&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #339933;"&gt;==&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;2&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
		&lt;span style="color: #993333;"&gt;int&lt;/span&gt; i2&lt;span style="color: #339933;"&gt;,&lt;/span&gt; j2&lt;span style="color: #339933;"&gt;,&lt;/span&gt; k&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
		&lt;span style="color: #993333;"&gt;int&lt;/span&gt; max &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp;
		&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;j &lt;span style="color: #339933;"&gt;&amp;lt;&lt;/span&gt; i&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
			i2 &lt;span style="color: #339933;"&gt;=&lt;/span&gt; j&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
			j2 &lt;span style="color: #339933;"&gt;=&lt;/span&gt; i&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
		&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;else&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
			i2 &lt;span style="color: #339933;"&gt;=&lt;/span&gt; i&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
			j2 &lt;span style="color: #339933;"&gt;=&lt;/span&gt; j&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
		&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
		&lt;span style="color: #b1b100;"&gt;for&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;k &lt;span style="color: #339933;"&gt;=&lt;/span&gt; i2&lt;span style="color: #339933;"&gt;;&lt;/span&gt; k &lt;span style="color: #339933;"&gt;&amp;lt;=&lt;/span&gt; j2&lt;span style="color: #339933;"&gt;;&lt;/span&gt; &lt;span style="color: #339933;"&gt;++&lt;/span&gt;k&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
			&lt;span style="color: #993333;"&gt;int&lt;/span&gt; atual &lt;span style="color: #339933;"&gt;=&lt;/span&gt; collatz&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;k&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
			&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;max &lt;span style="color: #339933;"&gt;&amp;lt;&lt;/span&gt; atual&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
				max &lt;span style="color: #339933;"&gt;=&lt;/span&gt; atual&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
			&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
		&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
		&lt;span style="color: #000066;"&gt;printf&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;%d %d %d&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; i&lt;span style="color: #339933;"&gt;,&lt;/span&gt; j&lt;span style="color: #339933;"&gt;,&lt;/span&gt; max&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
	&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
	&lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;ou pelo &lt;a href="http://pastebin.com/F4kSgPvz"&gt;pastebin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Testando as seguintes entradas&lt;br /&gt;
&lt;code&gt;1 10&lt;br /&gt;
100 200&lt;br /&gt;
201 210&lt;br /&gt;
900 1000&lt;br /&gt;
1 999999&lt;br /&gt;
1000 900&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;temos&lt;br /&gt;
&lt;code&gt;1 10 20&lt;br /&gt;
100 200 125&lt;br /&gt;
201 210 89&lt;br /&gt;
900 1000 174&lt;br /&gt;
1 999999 476&lt;br /&gt;
1000 900 174&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Parece tudo certo! &lt;img src='http://felipetonello.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Agora fica de exercício descobrir a complexidade desse algoritmo. &lt;img src='http://felipetonello.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=ruD70LNE0zQ:G0ZsauQppXs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=ruD70LNE0zQ:G0ZsauQppXs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=ruD70LNE0zQ:G0ZsauQppXs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=ruD70LNE0zQ:G0ZsauQppXs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?i=ruD70LNE0zQ:G0ZsauQppXs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=ruD70LNE0zQ:G0ZsauQppXs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=ruD70LNE0zQ:G0ZsauQppXs:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/chackalsjc/~4/ruD70LNE0zQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://felipetonello.com/blog/2010/06/09/problema-3n-1-no-uva/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://felipetonello.com/blog/2010/06/09/problema-3n-1-no-uva/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://felipetonello.com/blog/2010/06/09/problema-3n-1-no-uva/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Felipe Tonello</name>
						<uri>http://felipetonello.com</uri>
					</author>
		<title type="html"><![CDATA[Novamente nos embarcados]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/chackalsjc/~3/l_Vj1oet8i8/" />
		<id>http://felipetonello.com/blog/?p=259</id>
		<updated>2010-06-07T20:02:12Z</updated>
		<published>2010-06-07T20:02:12Z</published>
		<category scheme="http://felipetonello.com/blog" term="Diversos" /><category scheme="http://felipetonello.com/blog" term="C" /><category scheme="http://felipetonello.com/blog" term="Embarcados" /><category scheme="http://felipetonello.com/blog" term="Metemática" /><category scheme="http://felipetonello.com/blog" term="Python" />		<summary type="html"><![CDATA[Como me mudei para Itajubá &#8211; MG para estudar Matemática (B.Sc.) na UNIFEI comecei a procurar empregos aqui na região. Enfim consegui um na própria universidade. Agora estou trabalhando no LAT-UNIFEI, Laboratório de Alta Tensão da Universidade Federal de Itajubá. Novamente estou envolvido no mundo dos embarcados. Aqui estamos criando um dispositivo que detecta erros [...]]]></summary>
		<content type="html" xml:base="http://felipetonello.com/blog/2010/06/07/novamente-nos-embarcados/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3ABJg4Tx5pb-boDaW8sj4uhfqNs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3ABJg4Tx5pb-boDaW8sj4uhfqNs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3ABJg4Tx5pb-boDaW8sj4uhfqNs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3ABJg4Tx5pb-boDaW8sj4uhfqNs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Como me mudei para Itajubá &amp;#8211; MG para estudar Matemática (B.Sc.) na UNIFEI comecei a procurar empregos aqui na região. Enfim consegui um na própria universidade.&lt;/p&gt;
&lt;p&gt;Agora estou trabalhando no &lt;a title="Laboratório de Alta Tensão - UNIFEI" href="http://www.lat-efei.org.br/"&gt;LAT-UNIFEI&lt;/a&gt;, Laboratório de Alta Tensão da Universidade Federal de Itajubá.&lt;/p&gt;
&lt;p&gt;Novamente estou envolvido no mundo dos embarcados. Aqui estamos criando um dispositivo que detecta erros em transmissão de energia. E não é para menos que sem a matemática tudo isso seria impossível. Fazemos forte uso de Análise de curvas e inteligência artificial.&lt;/p&gt;
&lt;p&gt;Em breve postarei coisas interessantes sobre computação e matemática.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=l_Vj1oet8i8:n94-EzB6xz8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=l_Vj1oet8i8:n94-EzB6xz8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=l_Vj1oet8i8:n94-EzB6xz8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=l_Vj1oet8i8:n94-EzB6xz8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?i=l_Vj1oet8i8:n94-EzB6xz8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=l_Vj1oet8i8:n94-EzB6xz8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=l_Vj1oet8i8:n94-EzB6xz8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/chackalsjc/~4/l_Vj1oet8i8" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://felipetonello.com/blog/2010/06/07/novamente-nos-embarcados/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://felipetonello.com/blog/2010/06/07/novamente-nos-embarcados/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://felipetonello.com/blog/2010/06/07/novamente-nos-embarcados/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Felipe Tonello</name>
						<uri>http://felipetonello.com</uri>
					</author>
		<title type="html"><![CDATA[6º Encontro da comunidade de C e C++ Brasil]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/chackalsjc/~3/5XdN8oQS1T4/" />
		<id>http://felipetonello.com/blog/?p=252</id>
		<updated>2010-03-02T03:10:21Z</updated>
		<published>2010-01-22T00:56:03Z</published>
		<category scheme="http://felipetonello.com/blog" term="C" /><category scheme="http://felipetonello.com/blog" term="C++" /><category scheme="http://felipetonello.com/blog" term="Eventos" /><category scheme="http://felipetonello.com/blog" term="RobotQt" />		<summary type="html"><![CDATA[Pessoal, dia 6 de Março de 2010 haverá o 6º encontro da comunidade brasileira de C e C++ em São Paulo. Eu tive o privilégio de ser convidado para palestrar sobre o RobotQt. O título da palestra é: Simulador de robótica com Qt Framework. Não perca esse evento. Faça a inscrição aqui!]]></summary>
		<content type="html" xml:base="http://felipetonello.com/blog/2010/01/21/6%c2%ba-encontro-da-comunidade-de-c-e-c-brasil/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MRhPwaoeaNfxm5T8VJWUCHFT2sk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MRhPwaoeaNfxm5T8VJWUCHFT2sk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MRhPwaoeaNfxm5T8VJWUCHFT2sk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MRhPwaoeaNfxm5T8VJWUCHFT2sk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Pessoal, dia 6 de Março de 2010 haverá o &lt;a title="6º encontro da comunidade brasileira de C e C++" href="http://www.ccppbrasil.org/wiki/Grupo:Encontro_VI"&gt;6º encontro da comunidade brasileira de C e C++ em São Paulo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Eu tive o privilégio de ser convidado para palestrar sobre o &lt;a href="http://robotqt.org"&gt;RobotQt&lt;/a&gt;. O título da palestra é: &lt;strong&gt;Simulador de robótica com Qt Framework&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Não perca esse evento. Faça a inscrição &lt;a title="Inscrição para o 6º encontro da comunidade brasileira de C e C++" href="http://www.temporealeventos.com.br/inscricoes/inscricoes.php?area=95&amp;amp;form=367"&gt;aqui&lt;/a&gt;!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=5XdN8oQS1T4:XPm7gD8UzMk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=5XdN8oQS1T4:XPm7gD8UzMk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=5XdN8oQS1T4:XPm7gD8UzMk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=5XdN8oQS1T4:XPm7gD8UzMk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?i=5XdN8oQS1T4:XPm7gD8UzMk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=5XdN8oQS1T4:XPm7gD8UzMk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=5XdN8oQS1T4:XPm7gD8UzMk:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/chackalsjc/~4/5XdN8oQS1T4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://felipetonello.com/blog/2010/01/21/6%c2%ba-encontro-da-comunidade-de-c-e-c-brasil/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://felipetonello.com/blog/2010/01/21/6%c2%ba-encontro-da-comunidade-de-c-e-c-brasil/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://felipetonello.com/blog/2010/01/21/6%c2%ba-encontro-da-comunidade-de-c-e-c-brasil/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Felipe Tonello</name>
						<uri>http://felipetonello.com</uri>
					</author>
		<title type="html"><![CDATA[ValeTI &#8211; Portal de empregos de TI feito em django]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/chackalsjc/~3/IRsgEDORkD8/" />
		<id>http://felipetonello.com/blog/?p=250</id>
		<updated>2010-01-09T14:11:19Z</updated>
		<published>2010-01-09T14:11:19Z</published>
		<category scheme="http://felipetonello.com/blog" term="Django" /><category scheme="http://felipetonello.com/blog" term="Projetos" /><category scheme="http://felipetonello.com/blog" term="Web" /><category scheme="http://felipetonello.com/blog" term="Web Standards" /><category scheme="http://felipetonello.com/blog" term="XHTML" />		<summary type="html"><![CDATA[Olá pessoal, Depois de um bom tempo sem postar estou de volta para anunciar um portal que fiz. O ValeTI. É basicamente um portal de anúncios de emprego de TI na região do Vale do Paraíba. Para desenvolve-lo eu segui basicamente a idéia de desenvolvimento. Ser simples, claro e genérico. Por isso fiz bom uso de [...]]]></summary>
		<content type="html" xml:base="http://felipetonello.com/blog/2010/01/09/valeti-portal-de-empregos-de-ti-feito-em-django/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_Giy1RPnCEWeztqy_wgt5Bnmh1w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_Giy1RPnCEWeztqy_wgt5Bnmh1w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_Giy1RPnCEWeztqy_wgt5Bnmh1w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_Giy1RPnCEWeztqy_wgt5Bnmh1w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Olá pessoal,&lt;/p&gt;
&lt;p&gt;Depois de um bom tempo sem postar estou de volta para anunciar um portal que fiz. O &lt;a title="ValeTI - Empregos de TI no Vale do Paraíba" href="http://valeti.com.br"&gt;ValeTI&lt;/a&gt;. É basicamente um portal de anúncios de emprego de TI na região do &lt;a href="http://pt.wikipedia.org/wiki/Vale_do_Para%C3%ADba"&gt;Vale do Paraíba&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para desenvolve-lo eu segui basicamente a idéia de desenvolvimento. &lt;a title="The Practice of Programming" href="http://books.google.com/books?id=to6M9_dbjosC&amp;amp;amp;dq=the+practice+of+programming&amp;amp;printsec=frontcover&amp;amp;source=bn&amp;amp;hl=en&amp;amp;ei=dNpGS6mMGoGutgfd-fz0AQ&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=4&amp;amp;ved=0CBYQ6AEwAw#v=onepage&amp;amp;q=&amp;amp;f=false"&gt;Ser simples, claro e genérico&lt;/a&gt;. Por isso fiz bom uso de &lt;a href="http://python.org"&gt;Python&lt;/a&gt; e &lt;a href="http://djangoproject.com"&gt;Django&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Fiquei impressionado com o Django. É realmente uma ferramenta impressionante. Super fácil de usar, completa e muito genérica.&lt;/p&gt;
&lt;p&gt;Taí a dica. Agora nesse ano de 2010 voltarei com meus posts de artigos e tutoriais. O ano de 2009 foi muito corrido e não deu para fazer nada praticamente devido ao vestibular.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=IRsgEDORkD8:C_xmJ1Z-2d4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=IRsgEDORkD8:C_xmJ1Z-2d4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=IRsgEDORkD8:C_xmJ1Z-2d4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=IRsgEDORkD8:C_xmJ1Z-2d4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?i=IRsgEDORkD8:C_xmJ1Z-2d4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=IRsgEDORkD8:C_xmJ1Z-2d4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=IRsgEDORkD8:C_xmJ1Z-2d4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/chackalsjc/~4/IRsgEDORkD8" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://felipetonello.com/blog/2010/01/09/valeti-portal-de-empregos-de-ti-feito-em-django/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://felipetonello.com/blog/2010/01/09/valeti-portal-de-empregos-de-ti-feito-em-django/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://felipetonello.com/blog/2010/01/09/valeti-portal-de-empregos-de-ti-feito-em-django/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Felipe Tonello</name>
						<uri>http://felipetonello.com</uri>
					</author>
		<title type="html"><![CDATA[$60,00 dollares de desconto no DreamHost]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/chackalsjc/~3/XaYdHsnfhWA/" />
		<id>http://felipetonello.com/blog/?p=226</id>
		<updated>2009-11-18T12:33:34Z</updated>
		<published>2009-11-10T16:52:58Z</published>
		<category scheme="http://felipetonello.com/blog" term="Diversos" /><category scheme="http://felipetonello.com/blog" term="Nerd" /><category scheme="http://felipetonello.com/blog" term="Web" /><category scheme="http://felipetonello.com/blog" term="dreamhost" />		<summary type="html"><![CDATA[Atualizei agora pouco um promo code para o DreamHost. Se você estiver procurando o melhor host que existe para hospedar seu site ou blog, descubra como ganhar esse desconto agora! Fazendo isso, você estará contribuindo para que seja pago meu plano de hospedagem. Muito obrigado! Se tiver alguma dúvida ou sugestão, fique à vontade para [...]]]></summary>
		<content type="html" xml:base="http://felipetonello.com/blog/2009/11/10/60-dollares-de-desconto-no-dreamhost/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/f-aWp1cHDc3JwuhGCXaIz4JmBrw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f-aWp1cHDc3JwuhGCXaIz4JmBrw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/f-aWp1cHDc3JwuhGCXaIz4JmBrw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f-aWp1cHDc3JwuhGCXaIz4JmBrw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Atualizei agora pouco um promo code para o DreamHost.&lt;/p&gt;
&lt;p&gt;Se você estiver procurando o melhor host que existe para hospedar seu site ou blog, &lt;strong&gt;&lt;a href="/blog/desconto-no-dreamhost/"&gt;descubra como ganhar esse desconto&lt;/a&gt;&lt;/strong&gt; agora!&lt;/p&gt;
&lt;p&gt;Fazendo isso, você estará contribuindo para que seja pago meu plano de hospedagem. &lt;em&gt;Muito obrigado&lt;/em&gt;! &lt;img src='http://felipetonello.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Se tiver alguma dúvida ou sugestão, fique à vontade para comentar.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=XaYdHsnfhWA:YFGOGOPyBOk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=XaYdHsnfhWA:YFGOGOPyBOk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=XaYdHsnfhWA:YFGOGOPyBOk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=XaYdHsnfhWA:YFGOGOPyBOk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?i=XaYdHsnfhWA:YFGOGOPyBOk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=XaYdHsnfhWA:YFGOGOPyBOk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=XaYdHsnfhWA:YFGOGOPyBOk:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/chackalsjc/~4/XaYdHsnfhWA" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://felipetonello.com/blog/2009/11/10/60-dollares-de-desconto-no-dreamhost/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://felipetonello.com/blog/2009/11/10/60-dollares-de-desconto-no-dreamhost/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://felipetonello.com/blog/2009/11/10/60-dollares-de-desconto-no-dreamhost/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Felipe Tonello</name>
						<uri>http://felipetonello.com</uri>
					</author>
		<title type="html"><![CDATA[Atualização do plugin Category Show]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/chackalsjc/~3/5Zq9lPvVkCY/" />
		<id>http://felipetonello.com/blog/?p=208</id>
		<updated>2009-10-23T15:12:13Z</updated>
		<published>2009-10-23T15:12:13Z</published>
		<category scheme="http://felipetonello.com/blog" term="WordPress" /><category scheme="http://felipetonello.com/blog" term="PHP" /><category scheme="http://felipetonello.com/blog" term="Web" /><category scheme="http://felipetonello.com/blog" term="WP Plugins" />		<summary type="html"><![CDATA[Quanto tempo que não posto! Apesar de ter muitas idéias em mente, estive privado de postar esse ano pelo fato de estar estudando para o vestibular. Mas enfim, estou com um tempinho hoje e resolvi atualizar o plugin Category Show para o WordPress devido a grande quantidade de feedback. Nessa nova versão, a 0.3, vou [...]]]></summary>
		<content type="html" xml:base="http://felipetonello.com/blog/2009/10/23/atualizacao-do-plugin-category-show/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7Rq4vJPK8M3bLBgYqq0WDmCvWuU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7Rq4vJPK8M3bLBgYqq0WDmCvWuU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7Rq4vJPK8M3bLBgYqq0WDmCvWuU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7Rq4vJPK8M3bLBgYqq0WDmCvWuU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Quanto tempo que não posto! Apesar de ter muitas idéias em mente, estive privado de postar esse ano pelo fato de estar estudando para o vestibular.&lt;/p&gt;
&lt;p&gt;Mas enfim, estou com um tempinho hoje e resolvi atualizar o plugin &lt;a title="Plugin Category Show" href="/blog/wordpress-plugins/category-show/"&gt;Category Show&lt;/a&gt; para o WordPress devido a grande quantidade de feedback.&lt;/p&gt;
&lt;p&gt;Nessa nova versão, a 0.3, vou adicionar opção de geração de tags em uma página de opções. E também a possibilidade de ordenar a lista.&lt;/p&gt;
&lt;p&gt;É isso aí pessoal, abraço!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=5Zq9lPvVkCY:_HAvkLeJoQQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=5Zq9lPvVkCY:_HAvkLeJoQQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=5Zq9lPvVkCY:_HAvkLeJoQQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=5Zq9lPvVkCY:_HAvkLeJoQQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?i=5Zq9lPvVkCY:_HAvkLeJoQQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=5Zq9lPvVkCY:_HAvkLeJoQQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=5Zq9lPvVkCY:_HAvkLeJoQQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/chackalsjc/~4/5Zq9lPvVkCY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://felipetonello.com/blog/2009/10/23/atualizacao-do-plugin-category-show/#comments" thr:count="7" />
		<link rel="replies" type="application/atom+xml" href="http://felipetonello.com/blog/2009/10/23/atualizacao-do-plugin-category-show/feed/atom/" thr:count="7" />
		<thr:total>7</thr:total>
	<feedburner:origLink>http://felipetonello.com/blog/2009/10/23/atualizacao-do-plugin-category-show/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Felipe Tonello</name>
						<uri>http://felipetonello.com</uri>
					</author>
		<title type="html"><![CDATA[Analisando Número de Fibonacci e Recursividade]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/chackalsjc/~3/lmxC3isljmE/" />
		<id>http://felipetonello.com/blog/?p=191</id>
		<updated>2009-01-30T15:38:37Z</updated>
		<published>2009-01-30T04:54:47Z</published>
		<category scheme="http://felipetonello.com/blog" term="Algoritmos" /><category scheme="http://felipetonello.com/blog" term="Artigos" /><category scheme="http://felipetonello.com/blog" term="C++" /><category scheme="http://felipetonello.com/blog" term="Matemática" /><category scheme="http://felipetonello.com/blog" term="Metemática" />		<summary type="html"><![CDATA[O número de Fibonacci é bem conhecido no mundo da computação. Ele é representado por uma função recursiva: Calculando Tendo isso em mente é bem fácil criar um algoritmo que calcule o número de Fibonacci, certo? Na internet normalmente encontramos um algoritmo usando um método de recursão simples. Algo parecido com: Felipe: Esse artigo usa [...]]]></summary>
		<content type="html" xml:base="http://felipetonello.com/blog/2009/01/30/analisando-numero-de-fibonacci-e-recursividade/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/f1Z1tuO52dAyzLsQkK5ccoG00FM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f1Z1tuO52dAyzLsQkK5ccoG00FM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/f1Z1tuO52dAyzLsQkK5ccoG00FM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f1Z1tuO52dAyzLsQkK5ccoG00FM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;O &lt;a href="http://pt.wikipedia.org/wiki/Seq%C3%BC%C3%AAncia_de_Fibonacci"&gt;número de Fibonacci&lt;/a&gt; é bem conhecido no mundo da computação. Ele é representado por uma função recursiva:&lt;br /&gt;
&lt;img class="alignnone size-medium wp-image-193" title="Representação da Função de Fibonacci" src="http://felipetonello.com/blog/wp-content/uploads/2009/01/fib-rec-300x55.png" alt="Fibonacci e Proporção áurea" width="300" height="55" /&gt;&lt;/p&gt;
&lt;h3&gt;Calculando&lt;/h3&gt;
&lt;p&gt;Tendo isso em mente é bem fácil criar um algoritmo que calcule o número de Fibonacci, certo?&lt;br /&gt;
Na internet normalmente encontramos um algoritmo usando um método de recursão simples. Algo parecido com:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Felipe: Esse artigo usa apenas exemplos em C++&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;fibo1.cpp&lt;/strong&gt;&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="cpp" style="font-family:monospace;"&gt;&lt;span style="color: #339900;"&gt;#include &amp;lt;iostream&amp;gt;&lt;/span&gt;
&lt;span style="color: #339900;"&gt;#include &amp;lt;cstdlib&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; F&lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; n&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;n &lt;span style="color: #000080;"&gt;==&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;n &lt;span style="color: #000080;"&gt;==&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
    &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; F&lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;n &lt;span style="color: #000040;"&gt;-&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #000040;"&gt;+&lt;/span&gt; F&lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;n &lt;span style="color: #000040;"&gt;-&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;2&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; main&lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; argc, &lt;span style="color: #0000ff;"&gt;char&lt;/span&gt; &lt;span style="color: #000040;"&gt;*&lt;/span&gt;argv&lt;span style="color: #008000;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; n &lt;span style="color: #000080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;atoi&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;argv&lt;span style="color: #008000;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
    std&lt;span style="color: #008080;"&gt;::&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;cout&lt;/span&gt; &lt;span style="color: #000080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt; F&lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;n&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #000080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt; std&lt;span style="color: #008080;"&gt;::&lt;/span&gt;&lt;span style="color: #007788;"&gt;endl&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
    &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="http://pastebin.com/f2d429927"&gt;código no pastebin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Compilando:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;g++ -o fibo1 fibo1.cpp&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Rodando:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;./fibo1 8&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Deu 21, certo? Isso mesmo.&lt;/p&gt;
&lt;h3&gt;Analisando a Função&lt;/h3&gt;
&lt;p&gt;Mas digo para você: &lt;strong&gt;Não use esse programa!&lt;/strong&gt; É totalmente ineficiente. O número de chamadas para calcular &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_f2ef78cc1f1c158670fe0200c879ec90.png" align="absmiddle" class="tex" alt="F_{N}" /&gt; é exatamente &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_d355c47a1af9a7a9c8db72fe21a904b1.png" align="absmiddle" class="tex" alt="F_{N+1}" /&gt;. A função calcula recursivamente o mesmo número quantas vezes a chamar. Como podemos ver, a taxa de crescimento do número de Fibonacci tende a &lt;a href="http://pt.wikipedia.org/wiki/Propor%C3%A7%C3%A3o_%C3%A1urea"&gt;Proporção áurea&lt;/a&gt;:&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-192" title="Fibonacci e Proporção áurea" src="http://felipetonello.com/blog/wp-content/uploads/2009/01/fibfunc.png" alt="Fibonacci e Proporção áurea" width="350" height="75" /&gt;&lt;/p&gt;
&lt;p&gt;Lembrando que a razão áurea é definida por:&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-197" title="Razão áurea" src="http://felipetonello.com/blog/wp-content/uploads/2009/01/phi.png" alt="Razão áurea" width="471" height="67" /&gt;&lt;/p&gt;
&lt;p&gt;Sim, fibo1.cpp é uma função exponencial com &lt;a title="Big Oh Notation" href="http://en.wikipedia.org/wiki/Big_O_notation"&gt;Big Theta Notation&lt;/a&gt;, em função do tempo, de:&lt;br /&gt;
&lt;img class="alignnone size-full wp-image-195" title="Big Theta Notation 1" src="http://felipetonello.com/blog/wp-content/uploads/2009/01/fibtheta2.png" alt="Big Theta Notation 1" width="129" height="54" /&gt;&lt;/p&gt;
&lt;p&gt;O tempo de execução para computar &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_d355c47a1af9a7a9c8db72fe21a904b1.png" align="absmiddle" class="tex" alt="F_{N+1}" /&gt; é &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_1904b0447484e5dc02146f97393f7c7d.png" align="absmiddle" class="tex" alt="\phi \approx 1,6" /&gt; vezes mais demorado que para calcular &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_f2ef78cc1f1c158670fe0200c879ec90.png" align="absmiddle" class="tex" alt="F_{N}" /&gt;. Por exemplo, já que &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_347a548b9bfa501d8dfab29169fecd7a.png" align="absmiddle" class="tex" alt="\phi^{9} &amp;gt; 60" /&gt; e percebemos que nosso computador leva um segundo para calcular &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_f2ef78cc1f1c158670fe0200c879ec90.png" align="absmiddle" class="tex" alt="F_{N}" /&gt;, então levará mais de um minuto para calcular &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_7b3288cde05e266c7d61a5619cb0a6a1.png" align="absmiddle" class="tex" alt="F_{N+9}" /&gt; e mais de uma hora para calcular &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_2b345505aa2c1af734e633dd36a31af3.png" align="absmiddle" class="tex" alt="F_{N+18}" /&gt;.&lt;/p&gt;
&lt;p&gt;Podemos verificar isso calculando &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_f3e5a57b2417abcd21aae1d52825fdc3.png" align="absmiddle" class="tex" alt="F_{36}" /&gt; e &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_7d434a0da3291d6176b65638e4fb7b44.png" align="absmiddle" class="tex" alt="F_{45}" /&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;pet@felipe-opensuse:~/Projetos/C++/algoritmos&gt; time ./fibo1 36&lt;br /&gt;
14930352                                                           &lt;/p&gt;
&lt;p&gt;real    0m1.077s&lt;br /&gt;
user    0m1.040s&lt;br /&gt;
sys     0m0.008s&lt;br /&gt;
pet@felipe-opensuse:~/Projetos/C++/algoritmos&gt; time ./fibo1 45&lt;br /&gt;
1134903170                                                         &lt;/p&gt;
&lt;p&gt;real    0m54.927s&lt;br /&gt;
user    0m54.547s&lt;br /&gt;
sys     0m0.092s &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Em contraste, usando o método de &lt;a href="http://en.wikipedia.org/wiki/Dynamic_programming"&gt;programação dinâmica&lt;/a&gt; temos um tempo proporcional a N.&lt;/p&gt;
&lt;h3&gt;Programação dinâmica&lt;/h3&gt;
&lt;p&gt;Esse método consiste em guardar os valores dos números já calculados em um array. Fazendo isso, apenas checamos se o array já foi memorizado, e então retornamos o número, caso contrário calculamos recursivamente e assim por diante.&lt;br /&gt;
Lembrando que para um int de 32 bits, &lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_24597c0d5e316e6f858b30f758a6b563.png" align="absmiddle" class="tex" alt="F_{46} = 1836311903" /&gt; será o maior numero a ser calculado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;fibo2.cpp&lt;/strong&gt;&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="c" style="font-family:monospace;"&gt;&lt;span style="color: #339933;"&gt;#include &amp;lt;iostream&amp;gt;&lt;/span&gt;
&lt;span style="color: #339933;"&gt;#include &amp;lt;cstdlib&amp;gt;&lt;/span&gt;
&amp;nbsp;
namespace Fibonacci &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #993333;"&gt;int&lt;/span&gt; &lt;span style="color: #339933;"&gt;*&lt;/span&gt;memory&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
    &lt;span style="color: #993333;"&gt;int&lt;/span&gt; F&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #993333;"&gt;int&lt;/span&gt; n&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #666666; font-style: italic;"&gt;// int inicializa como 0&lt;/span&gt;
        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;memory&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;n&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt; &lt;span style="color: #339933;"&gt;!=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; memory&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;n&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
        &lt;span style="color: #993333;"&gt;int&lt;/span&gt; aux &lt;span style="color: #339933;"&gt;=&lt;/span&gt; n&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;n &lt;span style="color: #339933;"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;n &lt;span style="color: #339933;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; aux &lt;span style="color: #339933;"&gt;=&lt;/span&gt; F&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;n&lt;span style="color: #339933;"&gt;-&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; F&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;n&lt;span style="color: #339933;"&gt;-&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;2&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
        &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; memory&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;n&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; aux&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #993333;"&gt;int&lt;/span&gt; main&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #993333;"&gt;int&lt;/span&gt; argc&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #993333;"&gt;char&lt;/span&gt; &lt;span style="color: #339933;"&gt;*&lt;/span&gt;argv&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #993333;"&gt;int&lt;/span&gt; n &lt;span style="color: #339933;"&gt;=&lt;/span&gt; atoi&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;argv&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
    Fibonacci&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #202020;"&gt;memory&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; new &lt;span style="color: #993333;"&gt;int&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;n&lt;span style="color: #339933;"&gt;+&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
    std&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #000066;"&gt;cout&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;lt;&amp;lt;&lt;/span&gt; Fibonacci&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #202020;"&gt;F&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;n&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;lt;&amp;lt;&lt;/span&gt; std&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #202020;"&gt;endl&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
    delete &lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt; Fibonacci&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #202020;"&gt;memory&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
    &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="http://pastebin.com/f12eb1fa0"&gt;código no pastebin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Compilando:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;g++ -o fibo2 fibo2.cpp&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Rodando:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;./fibo2 8&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Deu 21, de novo? =)&lt;/p&gt;
&lt;p&gt;Aplicamos aqui uma técnica chamada &lt;em&gt;bottom-up dynamic programming&lt;/em&gt;. Se aplica em uma função recursiva que podemos salvar tempo por armazenar valores anteriores que serão usados depois. Essa técnica tem sido usada para uma gama grande de algoritmos e aplicações. E essa simples mudança fez com que nosso algoritmo passasse de exponencial para linear.&lt;/p&gt;
&lt;p&gt;Agora temos uma função, em relação ao tempo, proporcional ao N.&lt;br /&gt;
&lt;img src="http://felipetonello.com/blog/wp-content/uploads/2009/01/fibtheta21.png" alt="Big Theta Notation 2" title="Big Theta Notation 2" width="113" height="50" class="alignnone size-full wp-image-198" /&gt;&lt;/p&gt;
&lt;h3&gt;Comparando&lt;/h3&gt;
&lt;p&gt;Fazendo vários testes, podemos chegar em uma tabela de resultados, em função do &lt;strong&gt;tempo&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;arquivo&lt;/th&gt;
&lt;th&gt;&lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_cb09d855eefea0dc3acd2127f86fa324.png" align="absmiddle" class="tex" alt="F_{8}" /&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_f3e5a57b2417abcd21aae1d52825fdc3.png" align="absmiddle" class="tex" alt="F_{36}" /&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_7d434a0da3291d6176b65638e4fb7b44.png" align="absmiddle" class="tex" alt="F_{45}" /&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="http://felipetonello.com/blog/wp-content/cache/tex_58915190e9ff27470c85b6ddaaad35fe.png" align="absmiddle" class="tex" alt="F_{46}" /&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fibo1.cpp&lt;/td&gt;
&lt;td&gt;0m0.009s&lt;/td&gt;
&lt;td&gt;0m1.156s&lt;/td&gt;
&lt;td&gt;0m54.927s&lt;/td&gt;
&lt;td&gt;1m29.403s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fibo2.cpp&lt;/td&gt;
&lt;td&gt;0m0.007s&lt;/td&gt;
&lt;td&gt;0m0.007s&lt;/td&gt;
&lt;td&gt;0m0.006s&lt;/td&gt;
&lt;td&gt;0m0.007s&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;fibo2.cpp é constante? Sim! Para N relativamente pequeno &lt;strong&gt;fibo2.cpp&lt;/strong&gt; calcula em tempo constante.&lt;/p&gt;
&lt;p&gt;Será interessante ver até quanto esse algoritmo agüenta(ta errado né? hehe ¬¬) fazer em tempo constante. Alguém se habilita?&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=lmxC3isljmE:sApcpm9PIaY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=lmxC3isljmE:sApcpm9PIaY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=lmxC3isljmE:sApcpm9PIaY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=lmxC3isljmE:sApcpm9PIaY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?i=lmxC3isljmE:sApcpm9PIaY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=lmxC3isljmE:sApcpm9PIaY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=lmxC3isljmE:sApcpm9PIaY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/chackalsjc/~4/lmxC3isljmE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://felipetonello.com/blog/2009/01/30/analisando-numero-de-fibonacci-e-recursividade/#comments" thr:count="11" />
		<link rel="replies" type="application/atom+xml" href="http://felipetonello.com/blog/2009/01/30/analisando-numero-de-fibonacci-e-recursividade/feed/atom/" thr:count="11" />
		<thr:total>11</thr:total>
	<feedburner:origLink>http://felipetonello.com/blog/2009/01/30/analisando-numero-de-fibonacci-e-recursividade/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Felipe Tonello</name>
						<uri>http://felipetonello.com</uri>
					</author>
		<title type="html"><![CDATA[ack, um grep melhorado]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/chackalsjc/~3/U6eBd1jPkj4/" />
		<id>http://felipetonello.com/blog/?p=183</id>
		<updated>2009-01-25T18:10:00Z</updated>
		<published>2009-01-25T18:00:14Z</published>
		<category scheme="http://felipetonello.com/blog" term="Linux" /><category scheme="http://felipetonello.com/blog" term="Software" />		<summary type="html"><![CDATA[Se você é fan do grep(especialmente com o -drecurse), mas sempre vendo o .svn ou outro diretório irritante, você precisa do ack. Descobri esse programinha num blog do KDE e gostei muito! Algumas coisas legais: output bonitinho(colorido) highlight boa organização fácil configuração e até mesmo documentação Digitar menos, o que você quer mais? Exemplo:]]></summary>
		<content type="html" xml:base="http://felipetonello.com/blog/2009/01/25/ack-um-grep-melhorado/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eWEx-JNE-rzUjXbcH7gSkZQx_Sk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eWEx-JNE-rzUjXbcH7gSkZQx_Sk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eWEx-JNE-rzUjXbcH7gSkZQx_Sk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eWEx-JNE-rzUjXbcH7gSkZQx_Sk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Se você é fan do grep(especialmente com o -drecurse), mas sempre vendo o .svn ou outro diretório irritante, você precisa do &lt;a title="ack" href="http://petdance.com/ack/"&gt;ack&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Descobri esse programinha num blog do KDE e gostei muito!&lt;/p&gt;
&lt;p&gt;Algumas coisas legais:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;output bonitinho(colorido)&lt;/li&gt;
&lt;li&gt;highlight&lt;/li&gt;
&lt;li&gt;boa organização&lt;/li&gt;
&lt;li&gt;fácil configuração&lt;/li&gt;
&lt;li&gt;e até mesmo documentação&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Digitar menos, o que você quer mais?&lt;/p&gt;
&lt;p&gt;Exemplo:&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-184" title="ack in action" src="http://felipetonello.com/blog/wp-content/uploads/2009/01/ack.png" alt="ack in action" width="493" height="300" /&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=U6eBd1jPkj4:9WftT1ZS1K0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=U6eBd1jPkj4:9WftT1ZS1K0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=U6eBd1jPkj4:9WftT1ZS1K0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=U6eBd1jPkj4:9WftT1ZS1K0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?i=U6eBd1jPkj4:9WftT1ZS1K0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=U6eBd1jPkj4:9WftT1ZS1K0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=U6eBd1jPkj4:9WftT1ZS1K0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/chackalsjc/~4/U6eBd1jPkj4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://felipetonello.com/blog/2009/01/25/ack-um-grep-melhorado/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://felipetonello.com/blog/2009/01/25/ack-um-grep-melhorado/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://felipetonello.com/blog/2009/01/25/ack-um-grep-melhorado/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Felipe Tonello</name>
						<uri>http://felipetonello.com</uri>
					</author>
		<title type="html"><![CDATA[Josephus Problem, resolvendo-o de maneira simples]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/chackalsjc/~3/MNczl6_4q2w/" />
		<id>http://felipetonello.com/blog/?p=156</id>
		<updated>2009-01-09T18:31:05Z</updated>
		<published>2009-01-08T18:40:28Z</published>
		<category scheme="http://felipetonello.com/blog" term="Algoritmos" /><category scheme="http://felipetonello.com/blog" term="Artigos" /><category scheme="http://felipetonello.com/blog" term="C++" /><category scheme="http://felipetonello.com/blog" term="Eventos" /><category scheme="http://felipetonello.com/blog" term="Matemática" /><category scheme="http://felipetonello.com/blog" term="Metemática" />		<summary type="html"><![CDATA[Josephus Problem é um problema bem legal que estudei no livro Concrete Mathematics. Josephus foi um historiador judeu do primeiro século. A lenda conta que ele e 40 de seus homens estavam presos em uma caverna pelos Romanos. Eles decidiram suicidar-se à ser capturados. Formaram um circulo e começaram a se matar, da 3ª à [...]]]></summary>
		<content type="html" xml:base="http://felipetonello.com/blog/2009/01/08/josephus-problem-resolvendo-o-de-maneira-simples/">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hD0pvPHeaxYTyXsPt2tBPbO2f8U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hD0pvPHeaxYTyXsPt2tBPbO2f8U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hD0pvPHeaxYTyXsPt2tBPbO2f8U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hD0pvPHeaxYTyXsPt2tBPbO2f8U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Josephus_problem"&gt;Josephus Problem&lt;/a&gt; é um problema bem legal que estudei no livro &lt;a href="http://www.amazon.com/Concrete-Mathematics-Foundation-Computer-Science/dp/0201558025"&gt;Concrete Mathematics&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Flavius_Josephus"&gt;Josephus&lt;/a&gt; foi um historiador judeu do primeiro século. A lenda conta que ele e 40 de seus homens estavam presos em uma caverna pelos Romanos. Eles decidiram suicidar-se à ser capturados. Formaram um circulo e começaram a se matar, da 3ª à 3ªa pessoa em ordem da fila. Como Josephus não queria morrer, ele foi capaz de escolher o melhor lugar, afim de sobreviver, e juntar-se os Romanos que o capturaram.&lt;/p&gt;
&lt;h3&gt;O Problema&lt;/h3&gt;
&lt;p&gt;Na prática o problema teria &lt;em&gt;N&lt;/em&gt; pessoas em um círculo, iria ser percorrido &lt;em&gt;M &amp;#8211; 1&lt;/em&gt; pessoas e o &lt;em&gt;M&lt;/em&gt; iria ser morto, assim por diante, até sobrar uma única pessoa.&lt;/p&gt;
&lt;h3&gt;A Solução&lt;/h3&gt;
&lt;p&gt;Podemos representar a solução por uma função recursiva, para &lt;em&gt;N par e M = 2&lt;/em&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-157" title="Josephus Problem" src="http://felipetonello.com/blog/wp-content/uploads/2009/01/josephus1.png" alt="" width="160" height="21" /&gt;&lt;/p&gt;
&lt;p&gt;e para N ímpar e &lt;em&gt;M = 2&lt;/em&gt;, temos:&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-158" title="Josephus Problem" src="http://felipetonello.com/blog/wp-content/uploads/2009/01/josephus2.png" alt="" width="194" height="21" /&gt;&lt;/p&gt;
&lt;p&gt;Não vou postar a solução genérica aqui pois exige uma grande explicação e esse não é o objetivo do post. Você pode ver na &lt;a href="http://en.wikipedia.org/wiki/Josephus_problem"&gt;wikipedia&lt;/a&gt; ou então comprar o &lt;a href="http://www.amazon.com/Concrete-Mathematics-Foundation-Computer-Science/dp/0201558025"&gt;livro&lt;/a&gt;, caso queria saber mais.&lt;/p&gt;
&lt;p&gt;O interessante é que o algoritmo para solução genérica é bem simples em C++. Usando &lt;a href="http://en.wikipedia.org/wiki/Linked_list"&gt;listas ligadas(linked lists)&lt;/a&gt; é simples, fácil de entender e super rápido a execução do programa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Josephus.cpp&lt;/strong&gt;&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="cpp" style="font-family:monospace;"&gt;&lt;span style="color: #339900;"&gt;#include &amp;lt;iostream&amp;gt;&lt;/span&gt;
&lt;span style="color: #339900;"&gt;#include &amp;lt;cstdlib&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #0000ff;"&gt;struct&lt;/span&gt; Pessoa &lt;span style="color: #008000;"&gt;&amp;#123;&lt;/span&gt;
	&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; num&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
	Pessoa &lt;span style="color: #000040;"&gt;*&lt;/span&gt;prox&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
	Pessoa&lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; x, Pessoa &lt;span style="color: #000040;"&gt;*&lt;/span&gt;p&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #008000;"&gt;&amp;#123;&lt;/span&gt;
		num &lt;span style="color: #000080;"&gt;=&lt;/span&gt; x&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
		prox &lt;span style="color: #000080;"&gt;=&lt;/span&gt; p&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
	&lt;span style="color: #008000;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; main&lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; argc, &lt;span style="color: #0000ff;"&gt;char&lt;/span&gt; &lt;span style="color: #000040;"&gt;*&lt;/span&gt;argv&lt;span style="color: #008000;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #008000;"&gt;&amp;#123;&lt;/span&gt;
	&lt;span style="color: #666666;"&gt;//'a' recebe primeira pessoa criada&lt;/span&gt;
	&lt;span style="color: #666666;"&gt;//e 'a' é linkado para si mesmo&lt;/span&gt;
	&lt;span style="color: #666666;"&gt;//depois 'b' é criado apontado para 'a'&lt;/span&gt;
	&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; N &lt;span style="color: #000080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;atoi&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;argv&lt;span style="color: #008000;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt;, M &lt;span style="color: #000080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;atoi&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;argv&lt;span style="color: #008000;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;2&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
	Pessoa &lt;span style="color: #000040;"&gt;*&lt;/span&gt;a &lt;span style="color: #000080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;new&lt;/span&gt; Pessoa&lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;, &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
	a&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: #000080;"&gt;&amp;gt;&lt;/span&gt;prox &lt;span style="color: #000080;"&gt;=&lt;/span&gt; a&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
	Pessoa &lt;span style="color: #000040;"&gt;*&lt;/span&gt;b &lt;span style="color: #000080;"&gt;=&lt;/span&gt; a&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
&amp;nbsp;
	&lt;span style="color: #666666;"&gt;// Aloca na memória todas as pessoas&lt;/span&gt;
	&lt;span style="color: #666666;"&gt;// e 'b' recebe a última(enésima pessoa)&lt;/span&gt;
	&lt;span style="color: #666666;"&gt;// pois a contagem começa pela primeira('a')&lt;/span&gt;
	&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; &lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i &lt;span style="color: #000080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;2&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt; i &lt;span style="color: #000080;"&gt;&amp;lt;=&lt;/span&gt; N&lt;span style="color: #008080;"&gt;;&lt;/span&gt; &lt;span style="color: #000040;"&gt;++&lt;/span&gt;i&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt;
		b &lt;span style="color: #000080;"&gt;=&lt;/span&gt; &lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;b&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: #000080;"&gt;&amp;gt;&lt;/span&gt;prox &lt;span style="color: #000080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;new&lt;/span&gt; Pessoa&lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;i, a&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
&amp;nbsp;
	&lt;span style="color: #666666;"&gt;// Loop enquanto 'b' não estiver apontado&lt;/span&gt;
	&lt;span style="color: #666666;"&gt;// o próximo para ele mesmo&lt;/span&gt;
	&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;b &lt;span style="color: #000040;"&gt;!&lt;/span&gt;&lt;span style="color: #000080;"&gt;=&lt;/span&gt; b&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: #000080;"&gt;&amp;gt;&lt;/span&gt;prox&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #008000;"&gt;&amp;#123;&lt;/span&gt;
		&lt;span style="color: #666666;"&gt;// 'b' recebe a emésima pessoa&lt;/span&gt;
		&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; &lt;span style="color: #008000;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i &lt;span style="color: #000080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;1&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt; i &lt;span style="color: #000080;"&gt;&amp;lt;&lt;/span&gt; M&lt;span style="color: #008080;"&gt;;&lt;/span&gt; &lt;span style="color: #000040;"&gt;++&lt;/span&gt;i&lt;span style="color: #008000;"&gt;&amp;#41;&lt;/span&gt;
			b &lt;span style="color: #000080;"&gt;=&lt;/span&gt; b&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: #000080;"&gt;&amp;gt;&lt;/span&gt;prox&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
		a &lt;span style="color: #000080;"&gt;=&lt;/span&gt; b&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: #000080;"&gt;&amp;gt;&lt;/span&gt;prox&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
		b&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: #000080;"&gt;&amp;gt;&lt;/span&gt;prox &lt;span style="color: #000080;"&gt;=&lt;/span&gt; a&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: #000080;"&gt;&amp;gt;&lt;/span&gt;prox&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
		&lt;span style="color: #0000dd;"&gt;delete&lt;/span&gt; a&lt;span style="color: #008080;"&gt;;&lt;/span&gt; &lt;span style="color: #666666;"&gt;// 'a' é morto =/&lt;/span&gt;
	&lt;span style="color: #008000;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	&lt;span style="color: #666666;"&gt;// O sobrevivente _o/&lt;/span&gt;
	std&lt;span style="color: #008080;"&gt;::&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;cout&lt;/span&gt; &lt;span style="color: #000080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt; b&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: #000080;"&gt;&amp;gt;&lt;/span&gt;num &lt;span style="color: #000080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt; std&lt;span style="color: #008080;"&gt;::&lt;/span&gt;&lt;span style="color: #007788;"&gt;endl&lt;/span&gt;&lt;span style="color: #008080;"&gt;;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Ou então se preferir um link para o &lt;a href="http://pastebin.com/f45d06530"&gt;pastebin&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Analisando o Resultado&lt;/h3&gt;
&lt;p&gt;após compilar&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;g++ -o Josephus Josephus.cpp&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;rode o programa com N = 10 e M = 2&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;./Josephus 10 2&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;O valor deu 5? Verifique com a função. Bateu os valores?&lt;br /&gt;
Agora vá testando para 1 &amp;lt;= N &amp;lt;= 16 e M = 2.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;for n in `seq 16`; do echo -n &amp;#8220;$n: &amp;#8220;; ./Josephus $n 2; done&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Saída do loop:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;1: 1&lt;br /&gt;
2: 1&lt;br /&gt;
3: 3&lt;br /&gt;
4: 1&lt;br /&gt;
5: 3&lt;br /&gt;
6: 5&lt;br /&gt;
7: 7&lt;br /&gt;
8: 1&lt;br /&gt;
9: 3&lt;br /&gt;
10: 5&lt;br /&gt;
11: 7&lt;br /&gt;
12: 9&lt;br /&gt;
13: 11&lt;br /&gt;
14: 13&lt;br /&gt;
15: 15&lt;br /&gt;
16: 1&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Perceberam um certo padrão entre as respostas? A função genérica usa justamente esse padrão binário para solução.&lt;/p&gt;
&lt;p&gt;Ultimamente eu estou mais dedicado ao estudo de algoritmos, C++, C e Python(é claro). Depois pretendo postar uma analise desse algoritmo passo a passo.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=MNczl6_4q2w:1h48RdvtU8E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=MNczl6_4q2w:1h48RdvtU8E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=MNczl6_4q2w:1h48RdvtU8E:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=MNczl6_4q2w:1h48RdvtU8E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?i=MNczl6_4q2w:1h48RdvtU8E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=MNczl6_4q2w:1h48RdvtU8E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/chackalsjc?a=MNczl6_4q2w:1h48RdvtU8E:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/chackalsjc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/chackalsjc/~4/MNczl6_4q2w" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://felipetonello.com/blog/2009/01/08/josephus-problem-resolvendo-o-de-maneira-simples/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://felipetonello.com/blog/2009/01/08/josephus-problem-resolvendo-o-de-maneira-simples/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://felipetonello.com/blog/2009/01/08/josephus-problem-resolvendo-o-de-maneira-simples/</feedburner:origLink></entry>
	</feed>
