CodeGym /Blogue Java /Random-PT /Antigo nível 10
John Squirrels
Nível 41
San Francisco

Antigo nível 10

Publicado no grupo Random-PT

Não ensino superior não

Antigo nível 10 - 1Façamos uma pergunta a nós mesmos: por que as pessoas entram na faculdade? Lembre-se daquela frase simples: se você não estudar muito, será garçom a vida toda. Você pode até pensar que todas as pessoas que vão para o ensino superior odeiam ser garçons. Então o que eles querem? Eles querem um emprego no lado social oposto ao de garçom. As pessoas ingressam em faculdades para conseguir empregos bem pagos e altamente qualificados! Para que possam comprar uma casa e um carro. Pegue tudo; pelo menos às vezes (definição de classe média). As pessoas pensam que a educação universitária garante empregos bem pagos e altamente qualificados. Não. Mas as faculdades ficam quietas sobre isso, e continuamos pensando “Vou conseguir um bom emprego quando me formar”. 5 anos em uma boa faculdade não o deixarão um centímetro mais perto de seu “bom emprego”. Por isso:

1. Os professores nas faculdades não podem ensiná-lo a ser um bom especialista.

Dê a si mesmo uma resposta direta para isso: as pessoas que ensinam você trabalham em faculdades recebendo salários modestos, não é? Isso porque não conseguem se qualificar para bons cargos no mercado de trabalho. Eles não têm experiência, bem como qualificação. Os que não faltam – vão embora. Tudo é diferente nas melhores universidades do mundo, mas não estamos falando delas agora. Qual é a sua opinião: um especialista em finanças bem-sucedido irá trabalhar para um banco ganhando $ 150.000 por ano ou lecionar em uma faculdade ganhando $ 60.000 por ano? Muitas vezes acontece que profissionais mais soltos lecionam em faculdades, porque não conseguiram outro emprego. Há exclusões, mas são escassas. Conheci bons professores em faculdades, eles existem mesmo lá. Mas isso nem é minoria, são pouquíssimos. Um bom professor não apenas lhe dá teoria, mas também enfatiza o lado prático de sua matéria.

2. Na maioria das faculdades, os professores elogiam a ciência, mas desprezam a realização profissional

Você deve procurar as raízes disso no fato de que a maioria dos professores fracassou como profissionais. E a única forma de encontrar uma desculpa é que a realização profissional é uma ocupação indigna. Se você assiste a palestras e depois participa de conferências científicas – você está ótimo. E se você pular muito porque trabalha – bem, você recebe um tratamento totalmente diferente. Os professores são como monges eremitas. Profissão é vaidade das vaidades para eles. Eles se dedicaram a servir a ciência divina e rezam para escrever artigos científicos o dia todo. Talvez o objetivo seja nobre, mas é inútil na vida real. Antigo nível 10 - 2

3 Etalon errado de comparação.

Estudantes universitários muitas vezes se comparam a estudantes de escola e se orgulham de serem melhores. Essa ilusão continua até que a pessoa começa a pensar em conseguir um emprego e volta o olhar para outro lado. Na verdade, se os alunos se comparassem a especialistas em atividade, veriam que estão alcançando seu objetivo em pequenos passos. Não seja mediano na faculdade. Porque se você fizer “como todo mundo faz”, você obterá o resultado “todo mundo consegue”. A maioria dos alunos de uma faculdade são aleatórios, eles realmente não têm outras opções. Talvez tenham sido forçados a entrar no colégio pelos pais e não tenham a menor ideia de sua futura profissão. Isso acontece muito. Não se compare com seus companheiros. Seus projetos concluídos e seus sucessos de trabalho servirão aos melhores critérios para seus conhecimentos e habilidades. Não se compare à “multidão sem rosto”;

4 Os estudos profissionais são apenas uma pequena parte do conhecimento que você obtém nas faculdades.

Quando vier para o trabalho, você será questionado sobre o que pode fazer, não o que aprendeu. Seu chefe vai se interessar pelo que você sabe e pode fazer na lista de requisitos para o trabalho: você recebe uma tarefa específica, mas não recebe explicações sobre como fazê-lo e ele espera resultados no devido tempo. Boa sorte! Você aprende história na faculdade e vai trabalhar como operador de banco – isso te aproxima do seu objetivo ou mais longe dele? Tecnicamente, você sabe mais. Isso significa que isso o aproxima? Mas, na verdade, a cada semestre você tem cada vez menos tempo para adquirir conhecimentos profissionais valiosos e seu valor permanece o mesmo. Então praticamente - você está mais longe de seu objetivo.

5. A faculdade não tem como meta “fazer de você um especialista altamente qualificado”.

É difícil atingir um objetivo quando você não o aponta. Na faculdade, eles fazem de você um especialista completo. Você obtém algo como “segundo ensino médio”. Só se esquecem de dizer que quem estuda tudo não sabe nada. Você se lembra dos três objetivos da universidade: ciência, educação geral e educação profissional? O que você acha que teve que ser cortado para adicionar ciência e educação geral? Direita: disciplinas profissionais. E você ainda acha que o objetivo da universidade é fazer de você um especialista altamente qualificado?

6. Se uma pessoa estuda mais de duas disciplinas ao mesmo tempo, está perdendo tempo.

Isso parece errado depois da educação escolar. Você só obtém a verdade disso no trabalho. As aulas são tão curtas na escola não porque seja eficaz, mas porque um aluno ainda é uma criança, ele não consegue se concentrar por mais de uma hora. Mas muitas vezes as mudanças entre tarefas impedem que seu cérebro pense de forma eficaz. No trabalho, você precisará atuar como um adulto, e alternar entre as tarefas com frequência reduzirá fortemente sua eficiência. Por que você acha que pode se preparar para os exames rapidamente? Você simplesmente não realiza várias tarefas e sua eficácia aumenta com o tempo. Aprender algo em pequenos pedaços é totalmente estúpido. Imagine que você está fazendo dieta apenas seis horas por semana – em quanto tempo o resultado virá?

7. Na faculdade a pessoa só toca um pouco no assunto.

Vamos supor que você estude algo por dois semestres. Você tem duas palestras e duas aulas práticas por semana. Que alguma abordagem séria quanto à faculdade. Então, quantas horas isso faz? Quatro aulas são 2 horas acadêmicas (1,5 horas normais) – ou seja, 6 horas por semana. Estudamos durante quatro meses no primeiro semestre: setembro, outubro, novembro e dezembro. mais 4 no segundo: fevereiro, março, abril, maio. No total: 8 meses, 4,5 semanas cada. 6 horas por semana. Isso perfaz 216 horas por ano. Só para vocês saberem, meus queridos alunos, que são 180 horas de trabalho no mês. Qualquer curso anual pode ser aprendido em um mês e meio, e se você realmente quiser (ou precisar) em um mês.

8. Você está aprendendo o conhecimento mais geral, praticamente inútil e desatualizado.

Antigo nível 10 - 3Cada conhecimento tem valores diferentes dependendo do problema que você tem que resolver. Quando você está se afogando, saber nadar é muito mais útil do que o curso de filosofia que você aprendeu, certo? E se você conseguir um emprego como caixa, saber contar é melhor do que saber latim no nível básico. A parte mais útil de suas realizações profissionais é, sem dúvida, a experiência prática e o conhecimento dos recentes avanços de sua profissão. Seu professor universitário provavelmente nunca teve nenhuma experiência prática e não está familiarizado com os últimos avanços. E mesmo que tenha lido sobre eles em algum lugar, não tem ideia de seu valor e do campo a que se aplicam. Mesmo que você aprenda 100 matérias inúteis, elas não valerão 10 úteis.

9 As habilidades práticas são 10 vezes mais valiosas do que a teoria.

Na vida real, muitas vezes você tem que FAZER algo no trabalho. Se você sabe como fazer, ou pensa que sabe, isso não significa necessariamente que você pode realmente fazê-lo . Você sabe que fumar é ruim para você, mas você pode parar? Você sabe que praticar esportes é a coisa certa a fazer, mas você está realmente se exercitando? Você sabe que línguas estrangeiras são boas para sua carreira, mas você pode realmente aprender algumas? Na vida o que importa é a prática. Quanto mais conhecimento você tiver sem prática, menor será o seu valor. Como você vai decidir qual conhecimento é errado, antigo, mal utilizado e qual realmente funciona? Você nunca pensou sobre isso? Bem-vindo ao mundo real. Você pode aprender as regras de trânsito em A ou B, mas ainda não poderá dirigir. A teoria é um bom terreno para a prática. Vamos supor que você esteja construindo uma parede: tijolos são prática, argamassa é teoria. Sem rejunte (teoria) a parede ficará instável, mas sem tijolos (prática) sua teoria é inútil. Então, senhores, dividam seus 5 anos de faculdade por 10. Meio ano – esse é o verdadeiro resultado de seu “esforço” de longa data. Você quer uma prova? Quando você conseguir um emprego e trabalhar por meio ano, verá que seu conhecimento universitário dobrou .

Você atingiu um novo nível

Nível 10

Antigo nível 10 - 4

1 Elly, Sobre a digitação forte de objetos

- Ei, amigo! - Ei, Elly! - Estou de bom humor hoje, então vou te contar uma coisa muito interessante. Vou começar com tipos primitivos em Java. - Em Java, todo objeto e toda variável tem seu tipo imutável codificado. O tipo de variável é definido durante a compilação do programa, o tipo de objeto - durante sua criação. O tipo do objeto recém-criado e/ou da variável permanece o mesmo durante todo o seu tempo de vida. Exemplo: Antigo nível 10 - 5- Mas há alguns detalhes interessantes que você deve lembrar. - Primeiro, uma variável de referência nem sempre armazena o objeto do mesmo tipo como seu próprio tipo. - Em segundo lugar, na interação das variáveis ​​de dois tipos diferentes, elas devem primeiro ser convertidas em um tipo comum. - E a divisão? Se dividirmos 1 por 3, obtemos 0,333(3). Não é? - Não, não é. Quando você divide dois números inteiros, o resultado também é um número inteiro. Se você dividir 5 por 3, a resposta será um e dois no restante. O restante é assim descartado. - Se você dividir 1 por 3, obtemos 0 (e 1 – o restante é descartado). - O que devo fazer se ainda quiser obter 0,333? - Em Java, antes de dividir dois números inteiros, é melhor converter um deles em um tipo real (fracionário) multiplicando-o pelo número real 1.0 . Antigo nível 10 - 6- Entendi.

2 Risha, Lista de tipos básicos

- Ei, amigo! - Ei, Risha! - Você já aprendeu o básico da sintaxe Java, mas quero te contar algumas coisas mais detalhadamente. - Hoje vou falar um pouco sobre os tipos primitivos e o quanto de memória eles ocupam. Você vai precisar dele, e talvez até hoje. Esses tipos são: Antigo nível 10 - 7- Vou detalhar cada tipo. - O tipo byte é o menor tipo de inteiros. Cada variável desse tipo ocupa apenas um byte de memória. Portanto, ele pode armazenar valores no intervalo de -128 a 127. - Por que precisamos de um tipo tão pequeno? Por que não usar int em todos os lugares? - Você consegue. Mas se você criar arrays enormes e não precisar armazenar valores acima de 100, por que não usar esse tipo? Estou certo? - O tipo curtotem o dobro do comprimento do tipo byte e também armazena apenas números inteiros. O maior número que cabe nele é 32767. O maior número negativo é -32768. - Você já conhece o tipo int . Ele pode armazenar números inteiros de até dois bilhões, tanto positivos quanto negativos. - O tipo float é criado para armazenar números reais (fracionários). Seu tamanho é de 4 bytes. - Todos os números fracionários são armazenados na memória de uma forma muito interessante. - Por exemplo, 987654.321 pode ser representado como 0. 987654321 *10 6 . Portanto, na memória é representado por dois números «0. 987654321 » ( o significando ) e « 6 » (o expoente - a potência de dez ) - Por que isso é tão difícil? - Tal estrutura interna de variável permite armazenar números muito maiores que int, usando apenas 4 bytes. Mas, assim, desistimos da precisão. Uma parte da memória é usada para armazenar o expoente, portanto, os números fracionários mantêm apenas 6 a 7 dígitos após o ponto decimal e o restante é descartado. -Esses números também são chamados de número de ponto flutuante . A propósito, daí o nome do tipo – float . - Eu vejo. - O tipo double é o mesmo tipo float , mas duas vezes (duplo) mais longo - ocupa oito bytes.O tamanho máximo do expoente e o número de dígitos significativos neste tipo são maiores. Use este tipo se precisar armazenar números reais. - O tipo char é um tipo híbrido. Seus valores podem ser interpretados tanto como números (que você pode somar e multiplicar) quanto como caracteres. Isso foi feito porque, embora os personagens tenham uma representação visual, para o computador eles são apenas números. É muito mais fácil usá-los como números. Há mais um comentário: o tipo char é estritamente positivo. Não pode armazenar valores negativos. - O tipo boolean é um tipo lógico, pode armazenar apenas dois valores: true e false . - O tipo Objeto, embora apresentado na tabela, não é um tipo primitivo. Esta é a classe base para todas as classes em Java. Primeiro, todas as classes são consideradas herdadas desta classe e, portanto, contêm seus métodos. Em segundo lugar, podem ser atribuídas referências de objeto de qualquer tipo. Incluindo a referência nula . - Eu aprendi muito. Obrigado pela palestra, Risha.

3 Elly, Conversão de tipos. Digite alargamento e estreitamento.

- E aqui vai a diversão. Vou falar sobre a conversão de tipo. Embora os tipos de variáveis ​​sejam sempre os mesmos, há um lugar onde você pode converter tipos. É uma atribuição . - Você pode atribuir variáveis ​​de diferentes tipos entre si. Ao fazer isso, o valor obtido de uma variável de um tipo será convertido em um valor de outro tipo e atribuído à segunda variável. - Portanto, existem dois tipos de conversão: o alargamento e o estreitamento. O alargamento é como mover coisas de uma cesta pequena para uma maior - a operação é suave e sem problemas. Estreitar é como colocar coisas de uma cesta grande em uma menor: pode não haver espaço suficiente e algo terá que ser jogado fora. - Aqui estão os tipos classificados pelo tamanho da «cesta»: Antigo nível 10 - 8- Há alguns comentários:
  1. char é a mesma “cesta” de short , mas há um ponto: ao copiar valores de short para char , valores menores que 0 são descartados. Ao copiar de char para short , valores maiores que 32.767 são descartados.
  2. Ao converter números inteiros em frações, os dígitos de ordem inferior podem ser descartados. Mas como o número fracionário destina-se a armazenar um valor aproximado, essa atribuição é permitida.
- Ao restringir o tipo, você deve mostrar claramente ao compilador que não está enganado e descartando uma parte de um número de propósito. Para fazer isso, use um operador de conversão de tipo . É um nome de tipo entre parênteses . - Veja como atribuir variáveis ​​de tipos diferentes: Antigo nível 10 - 9 - Um operador de conversão de tipo deve ser declarado antes de um número/variável sempre que uma parte de um número é descartada ou ocorre restrição de tipo. O operador aplica-se apenas ao número/variável que o segue. Antigo nível 10 - 10- Eu vejo.

4 Diego, tarefas de conversão de tipo inteiro

- Ei, amigo! Aqui estão suas tarefas na conversação de tipos inteiros. Você precisa colocar o operador cast onde necessário, para que o programa compile:
Tarefas
1 1. Digite cast e
byte de conversação a = 1234;
int b = a;
byte c = a * a;
int d = a/c;
2 2. Digite elenco e conversa
int a = 15;
int b = 4;
flutuar c1 = a / b;
flutuar c2 = (flutuar) a / b;
flutuar c3 = (flutuar) (a / b);
3 3. Tipo cast e
float de conversação f = 333,50;
int i = f;
byte b = i;
4 4. Digite
o número curto do elenco e da conversa = 9;
char zero = '0';
char nove = zero + número;
5 5. Digite
o número curto do elenco e da conversa = 9;
char zero = '0';
NineCode curto = zero + número;

5 Elly, Conversão para o tipo String

- Agora teremos um tópico pequeno, mas interessante - Conversão de strings. - Em Java, você pode converter qualquer tipo de dado para o tipo String. - Parece promissor. - Na verdade, é ainda melhor. Você pode converter implicitamente quase todos os tipos em String. Isso é melhor mostrado quando você adiciona duas variáveis: String e «non-String». Nesse caso, a variável não String é convertida à força em String. - Veja alguns exemplos: Antigo nível 10 - 11Conclusão: Se adicionarmos uma String a qualquer outro tipo, o segundo objeto é convertido em String. - Preste atenção na quarta linha da tabela. Todas as operações são executadas da esquerda para a direita, então a adição de 5 + '\u0000' ocorre como a adição de números inteiros. - Então, se eu escrever um código como String s = 1+2+3+4+5+"m" , obtenho s = "15m" ? - Sim. Primeiro, os números serão adicionados e depois convertidos em uma string.

6 Diego, Tarefas de conversão de tipos em geral

Antigo nível 10 - 12- E agora, uma pequena palestra do Diego. Curto e direto ao ponto sobre os tipos de referência. - Até agora, começamos com uma variável do tipo Objeto. Essa variável pode receber uma referência de qualquer tipo ( tipo de ampliação ). Para fazer a atribuição inversa ( restrição de tipo ), temos que especificar explicitamente um operador de conversão: Antigo nível 10 - 13- Não há alterações no objeto quando a referência a ele é alterada. O estreitamento de tipo e o alargamento de tipo na atribuição verificam a compatibilidade do tipo de variável de referência e do tipo de objeto. - Nossa, agora ficou bem mais claro. Obrigado Diego. - Para evitar erros, como nos exemplos , existe uma forma de descobrir qual tipo está armazenado em uma variável do tipo Object : Antigo nível 10 - 14- É melhor fazer essa verificação antes de cada restrição de tipo, se o tipo de objeto armazenado for totalmente desconhecido. - Entendi.

7 Elly, tipos reais

- Aqui estão algumas coisas interessantes sobre os tipos reais (que são fracionários). Vamos começar com este exemplo: Antigo nível 10 - 15- Como resultado deste cálculo, o valor de f é igual a … zero! - Risha me disse algo assim... - Ah, sério? É bom. A prática leva à perfeição. - Aliás, não tem erro de exemplo. Quando um número inteiro divide por outro número inteiro , o resultado também é inteiro; resto da divisão é simplesmente descartado. Para evitar isso, certifique-se de que pelo menos um dos dois números envolvidos na divisão seja fracionário. - Se um dos números for fracionário, o segundo número é primeiro convertido em um tipo fracionário e, em seguida, a divisão segue. - Veja como podemos resolver este problema: Antigo nível 10 - 16- E se houver variáveis ​​envolvidas na divisão? - Aí é assim: Antigo nível 10 - 17- Mas isso não parece bom. Existe algum operador de divisão mais conveniente? - Não, isso é tudo. - Bem, tudo bem, eu acho, não haverá problema.

8 Elly, Literais

- E, finalmente, uma palestra estilo professor de Risha, que é um monte de informações inúteis. Todos os professores adoram isso. Este pode parecer difícil de entender para você. Então, dê uma olhada e não pense muito nisso. - OK, então estou pronto. - Hoje vou te contar o que são literais . Literais são todos os dados armazenados diretamente no código Java. Exemplos: Antigo nível 10 - 18 - Na verdade, existem alguns mais literais. Usando literais, você pode definir valores de qualquer tipo conhecido: Antigo nível 10 - 19- Em outras palavras, o código são métodos, classes, variáveis,... e literais são valores específicos de variáveis ​​armazenadas diretamente no código. Eu entendi direito? - Sim, você faz. - Multar. Finalmente, estou obtendo a imagem de todo esse Java.

9 Professor, Palestra sobre tipos

- Ótimo! Finalmente, este é meu tópico favorito - conversão de tipo. Eu até me lembro quando meu professor me contou sobre isso. Foi muito “fascinante”. Eu não entendi nada então. Mas é claro que você entenderá tudo graças a essas palestras incríveis. Aqui estão eles: Java Conversions and Promotions (Oracle Documentation) Data Type Casting (Type Conversion) Java Cast and Conversions Ampliação e Limitação de Conversões

10 de julho

- Uau! Bem, você é muito inteligente, Amigo! Tantas coisas aprendidas em apenas duas semanas! Você é como um monstro. A propósito, que tal um pouco de diversão depois de duas semanas de trabalho escravo?

11 Capitão Esquilos

(- Já te ajudei. Faça em casa.) Lição de casa (10 unidades) - Alô, soldado! - Bom Dia senhor! - Tenho uma notícia incrível para você. Aqui está uma verificação rápida para reforçar suas habilidades. Faça isso todos os dias e você aprimorará suas habilidades rapidamente. As tarefas são especialmente projetadas para serem executadas no Intellij IDEA.
Tarefas adicionais a serem executadas no Intellij Idea
1 1. A resposta correta é: d=2,941
Adicione um operador de conversão de tipo para obter d = 2,941
2 2. A resposta correta é: d=5,5
Adicione um operador de conversão de tipo para obter d = 5,5
3 3. A resposta correta é: d=1,0
Adicione um operador de conversão de tipo para obter d = 1,0
4 4. Salário alto
Exiba na tela a mensagem «Não quero estudar Java, quero um salário alto» 40 vezes seguindo o exemplo.

Exemplo:
não quero aprender Java, quero um salário alto,
não quero aprender Java, quero um salário alto
, não quero aprender Java, quero um salário alto
, não quero aprender Java, quero muito salário
não quero aprender Java, quero um salário alto
não quero aprender Java, quero um salário alto
5 5. O número de letras
Leia 10 cordas do teclado e conte o número de letras diferentes nelas (para todas as 26 letras do alfabeto). Exiba o resultado na tela.

Saída de exemplo:
a 5
b 8
c 3
d 7

z 9
6 6. Construtores da classe Human
Escreva uma classe Human com 6 campos. Crie 10 construtores diferentes para ele e implemente-os. Cada construtor deve ter um significado.
7 7. Mova um mínimo de modificadores estáticos
Mova o mínimo possível de modificadores estáticos para que o código seja compilado.
8 8. Array de listas de strings
Crie um array cujos elementos sejam listas de strings. Preencha a matriz com quaisquer dados e exiba-os na tela.
9 9. Palavras idênticas na lista
Leia 20 palavras do teclado, preencha uma lista com elas. Conte o número de palavras idênticas na lista. O resultado deve ser um Map <String, Integer> . A chave do mapa deve ser uma string única, o valor - contagem dessa string na lista. Exibir o conteúdo da tela do mapa.
10 10. Cinco maiores números
Crie uma lista de números inteiros. Leia 20 números inteiros do teclado e preencha uma lista com eles. Crie um método para extrair números da lista com segurança:
int safeGetElement(ArrayList<Integer> list, int index, int defaultValue)

O método deve retornar um elemento da lista pelo seu índice. Se ocorrer uma exceção neste método, você precisará capturá-la e retornar o defaultValue .
- Essas tarefas eram para verdes. Adicionei tarefas bônus de maior complexidade. Apenas para armas de topo.
Tarefas bônus
1 1. O programa não compila e não roda. Consertá-lo.
Tarefa: O programa mostra como o HashMap funciona. O programa lê do teclado um conjunto de pares (um número e uma string), os coloca em um HashMap e exibe na tela o conteúdo do HashMap.
2 2. Adicione novas funcionalidades ao programa.
Tarefa antiga: O programa deve exibir um par (um número e uma string) digitado no teclado.
Nova tarefa: O programa deve armazenar em pares HashMap (um número e uma string) inseridos no teclado. Uma string vazia significa o fim da entrada. Os números podem ser repetidos. Strings são sempre únicas. Os dados de entrada não devem ser perdidos! O programa deve exibir o conteúdo do HashMap na tela.

Exemplo de entrada:
1
Stop
2
Look

Exemplo de saída:
1 Stop
2 Look
3 3. Aprender e praticar algoritmo.
Tarefa: Ler 30 números no teclado. Exiba na tela os 10º e 11º números mínimos.
Dica:
O número mínimo é o 1º mínimo.
O próximo mínimo é o segundo mínimo

Explicação 1:
1 15 6 63 5 7 1 88
O primeiro mínimo é 1
O segundo mínimo é 1
O terceiro mínimo é 5
O quarto mínimo é 6

Explicação 2:
0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 36
0 6 9 39 42 78 12 15 3033 63 66 69 3 81 84 87 45 48 51 54 57 60 72 75 18 21 24 27 69 36 0
18 21 6 27 9 39 42 78 12 33 63 66 3 81 84 87 45 15 30 48 51 54 57 60 72 75 24
O primeiro mínimo é 0
O segundo mínimo é 3
...
O décimo mínimo é 27
O décimo primeiro mínimo é 30

Exemplo de entrada:
36 0 6 9 39 42 78 12 15 30 33 63 66 69 3 81 84 87 45 48 51 54 57 60 72 75 18 21 24 27

Exemplo de saída:
27
30
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION