\documentclass[brazil]{article}

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

\title{Prova de Programa\c{c}\~ao de Computadores}

\author{Prof.: Carlos Camar\~ao}

\date{30 de Junho de 2008}

\addtolength\textwidth{15mm}
\setlength{\parindent}{0pt}

\pagestyle{empty}

\begin{document}

\maketitle

\begin{enumerate}

\item (10 pontos) Escreva em Java um programa que leia dois valores
inteiros positivos {\tt numQuest} e {\tt numAlunos}, que
representam respectivamente o número de quest\~oes de uma prova de
múltipla escolha e o número de alunos de uma turma.

Em seguida, o programa deve ler uma seq\"u\^encia de {\tt numQuest}
valores inteiros, que representam as respostas corretas de cada
questão.

Por \'ultimo, o programa deve ler, para cada um dos {\tt numAlunos}
alunos, {\tt numQuest } valores inteiros, que representam as respostas
de cada aluno para cada questão da prova.

Você pode considerar que os dados de entrada estão corretos.

O programa deve imprimir a média aritmética das notas dos alunos da
turma.

\item (10 pontos) Um numeral \'e um {\em pal\'{\i}ndromo\/} se ele \'e
o mesmo se lido da esquerda para a direita ou da direita para a
esquerda (em outras palavras, se ele \'e igual ao seu reverso). Por
exemplo, 74547 \' um pal\'{\i}ndromo.

Um n\'umero pode ter uma representa\c{c}\~ao que \'e um
pal\'{\i}ndromo em uma base, e n\~ao \'e em outra. Por exemplo, 17
n\~ao \'e um pal\'{\i}ndromo, mas 10001 \'e, e ambas representam o
mesmo n\'umero se as bases s\~ao 10 e 2, respectivamente.

Fa\c{c}a um programa que leia uma lista de numerais na base 10 e
imprima, para cada $i$ dessa lista, uma das seguintes mensagens,
conforme apropriado:

  \begin{itemize}
 
     \item \begin{tabular}[t]{c}
              Bases de 2 a 16 nas quais a representa\c{c}\~ao de $i$ \'e um
               pal\'{\i}ndromo: $b_1\: \ldots\: b_n$ \\
            \end{tabular}

     \item A representa\c{c}\~ao de $i$ n\~ao \'e um pal\'{\i}ndromo
     em nenhuma das bases de 2 a 16

  \end{itemize}

Por exemplo, se entrada for: 
  \[ \begin{array}{l}
       17\\
       19
     \end{array}
  \]
a sa\'{\i}da deve ser:

\begin{center}
\begin{tabular}{l}
   Bases de 2 a 16 nas quais a representa\c{c}\~ao de 17 \'e um pal\'{\i}ndromo: 2 4 16\\
   A representa\c{c}\~ao de 19 n\~ao \'e um pal\'{\i}ndromo em nenhuma das bases de 2 a 16
\end{tabular}
\end{center}

Note que $17_{10} = 10001_2 = 101_4 = 11_{16}$.

Use o seguinte m\'etodo: dados inteiros {\tt m} e {\tt base}, {\tt
converte} retorna um {\em string\/} com os d\'{\i}gitos da
representa\c{c}\~ao de {\tt m} na base {\tt base}.

{\tt 
\begin{center}
\begin{tabbing}xx\=xx\=\kill
    static String converte (int m, int base) \{\+\\
	String s = \symbol{34}\symbol{34};\\ 
        while (m != 0) \{ \+\\
	    s = (m \% base) + s;\\
            m = m / base;\-\\
	\}\\
	return s;\-\\
    \}
\end{tabbing}
\end{center} } 

Use uma vari\'avel {\tt bases} de tipo {\tt ArrayList<Integer>} para
armazenar as bases, e o m\'etodo {\tt isEmpty} para testar se alguma
base foi adicionada \'a vari\'avel {\tt bases} (para cada n\'umero
lido). A assinatura do m\'etodo {\tt isEmpty} \'e: {\tt boolean
isEmpty()}; \'e um m\'etodo n\~ao est\'atico de {\tt ArrayList}.

\end{enumerate}

\end{document}
