\documentclass{article}

\usepackage[portuguese]{babel}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}

\author{Carlos Camar\~ao}

\date{Data de Entrega: 23 de Outubro de 2008}

\title{Segunda Lista de Exerc\'{\i}cios}

\begin{document}

\maketitle

{\parindent 0pt As solu\c{c}\~oes de todos os problemas abaixo devem
considerar que os dados de entrada est\~ao corretos (ou seja, est\~ao
de acordo com o especificado no enunciado do problema).}

\vspace*{\baselineskip}
{\parindent 0pt Para cada um dos problemas abaixo, escreva dois
programas para sua solu\c{c}\~ao: a primeira usando comandos de
repeti\c{c}\~ao e a segunda usando recurs\~ao.}

{\parindent 0pt Para facilitar o trabalho do monitor, por favor
escreva as solu\c{c}\~oes que usam comandos de repeti\c{c}\~ao em
arquivos {\tt Problema1.java}, {\tt Problema2.java}, \ldots, {\tt
Problema5.java}, com as classes que cont\^em o m\'todo {\tt main} com
o mesmo nome do arquivo mas sem a extens\~ao {\tt .java), e as
solu\c{c}\~oes baseadas no uso de recurs\~ao em arquivos {\tt
Problema1Rec.java}, {\tt Problema2Rec.java}, \ldots, {\tt
Problema5Rec.java} e, novamente, as classes que cont\^em o m\'etodo
{\tt main} com o mesmo nome (sem a extens\~ao {\tt .java).}

\vspace*{\baselineskip}
{\parindent 0pt A solu\c{c}\~ao de cada problema abaixo deve ler cada
dado de entrada de caixa de texto criada em uma janela, pelo m\'etodo
{\tt showInputDialog} da classe {\tt JOptionPane} (da biblioteca {\tt
swing}), e escrever dados de sa\'{\i}da em uma janela usando o
m\'etodo {\tt showMessageDialog} dessa mesma classe. Quando existir
uma seq\"u\^encia de dados de entrada e de sa\'{\i}da, cada valor
dessa seq\"u\^encia deve ser lido em uma opera\c{c}\~ao de leitura (ou
seja, em uma chamada a {\tt showInputDialog}) e cada valor de
sa\'{\i}da deve ser escrito em uma opera\c{c}\~ao de sa\'{\i}da
(chamada a {\tt showMessageDialog}).

\vspace*{\baselineskip}
{\bf Problema 1}

{\em Entrada\/}: $n_1,n_2,\ldots,n_k,0$, onde $n_i$ \'e uma cadeia de
caracteres que representa um n\'umero inteiro n\~ao-negativo em
nota\c{c}\~ao decimal, para $i=1,\ldots,k$, $k\geq 0$.

{\em Sa\'{\i}da\/}: $b_1, \ldots, b_k$, sendo $b_i$ a
representa\c{c}\~ao de $n_i$ em nota\c{c}\~ao bin\'aria.

\begin{tabbing}
Exemplo: para a entrada: \=\+\\
              \begin{tabular}[t]{l}
               8\\
               10\\
               0
              \end{tabular}\-\\
a sa\a'{\i}da deve ser:\+\\
              \begin{tabular}[t]{l}
               1000\\
               1010
              \end{tabular}
\end{tabbing}

\clearpage
{\bf Problema 2} Inverso do problema 1:

{\em Entrada\/}: $n_1,n_2,\ldots,n_k,0$, onde $n_i$ \'e uma cadeia de
caracteres que representa um n\'umero inteiro n\~ao-negativo em
nota\c{c}\~ao bin\'aria, para $i=1,\ldots,k$, $k\geq 0$.

{\em Sa\'{\i}da\/}: $b_1, \ldots, b_k$, sendo $b_i$ a
representa\c{c}\~ao de $n_i$ em nota\c{c}\~ao decimal.

\begin{tabbing}
Exemplo: para a entrada: \=\+\\
              \begin{tabular}[t]{l}
               1000\\
               1010\\
               0
              \end{tabular}\-\\
a sa\a'{\i}da deve ser:\+\\
              \begin{tabular}[t]{l}
               8\\
               10
              \end{tabular}
\end{tabbing}

\vspace*{\baselineskip}
{\bf Problema 3}

{\em Entrada\/}: $n_1, p_1, n_2, p_2, \ldots, n_k,p_k,0$, onde $n_i>0$
e $p_i>0$ para $i=1,\ldots,k$.

{\em Sa\'{\i}da\/}: Para cada $(n_i,p_i)$ de $1$ at\'e $k$, o n\'umero
de combina\c{c}\~oes de $p_i$ elementos que podem ser formadas com
$n_i$ elementos. Se $n_i<p_i$, esse n\'umero \'e igual a zero. Se
$n_i\geq p_i$, o resultado deve ser obtido usando a f\'ormula:

   \[ \displaystyle\binom{n}{p} = 
          \frac{n\times (n-1)\times \cdots \times (n-p+1)}
               {p!} \]

(Nota: a f\'ormula acima corrige erro em f\'ormula usada na p\'agina 
68 do livro-texto).

Observa\c{c}\~ao: Declarar e usar m\'etodos para calcular o fatorial
de um n\'umero inteiro e para calcular $\binom{n}{p}$.

\begin{tabbing}
Exemplo: para a entrada: \=\+\\
          \begin{tabular}[t]{l}
            4\\ 
            2\\
            5\\
            2\\
            0
          \end{tabular}\-\\
a sa\a'{\i}da deve ser:\+\\
          \begin{tabular}[t]{l}
            6\\
            10
          \end{tabular}
\end{tabbing}

\vspace*{\baselineskip}
{\bf Problema 4}

{\em Entrada\/}: $n_1,\ldots,n_k,0$, onde, para $i=1,\ldots,k$,
$n_i>0$ \'e o n\'umero de valores distintos do numerador da f\'ormula:

  \[ \pi = 4\times(\displaystyle
           \frac{2 \times 4\times 4 \times 6 \times 6\times 8 \times \cdots}
                {3\times 3 \times 5\times 5 \times 7 \times 7\times \cdots})
  \]

{\em Sa\'{\i}da\/}: $\pi_1, \ldots, \pi_k$, onde $\pi_i$, para
$i=1,\ldots,k$, \'e um valor aproximado, dado pela f\'ormula acima, do
n\'umero irracional comumente denotado por $\pi$.

Por exemplo, para $n=3$, o valor aproximado deve ser o obtido como
resultado de:

  \[ 4\times(\displaystyle\frac
              {2 \times 4\times 4 \times 6\times 6}
              {3\times 3 \times 5 \times 5\times 7})
  \]
   
Observa\c{c}\~ao: Usar n\'umeros de ponto flutuante para fazer
divis\~oes.

\vspace*{\baselineskip}
{\bf Problema 5}

{\em Entrada\/}: $n_1,\ldots,n_k,0$, onde, para $i=1,\ldots,k$,
$n_i>0$.

{\em Sa\'{\i}da\/}: Soma de todos os $a+b$ tais que $a<n_i$, $b<n_i$ e
$a$ e $b$ s\~ao {\em amigos\/}, para $i=1,\ldots,k$.

Seja $\mathit{sumDiv\/}(n)$ a soma dos divisores pr\'oprios de $n$
(n\'umeros menores que $n$ que dividem $n$ exatamente).  Se
$\mathit{sumDiv\/}(a) = b$ and $\mathit{sumDiv\/}(b) = a$, onde $a
\not= b$, en\~ao $a$ e $b$ s\~ao {\em amigos\/}.

Exemplo: os divisores pr\'oprios de 220 s\~ao 1, 2, 4, 5, 10, 11, 20,
22, 44, 55 e 110; portanto $\mathit{sumDiv\/}(220) = 284$. Os
divisores pr\'oprios de 284 s\~ao 1, 2, 4, 71 e 142; portanto
$\mathit{sumDiv\/}(284) = 220$.

\end{document}

