Problemas do Beecrowd
2163 - O Despertar da Força
a = leia_inteiros(" ")
n, m = a[1], a[2]
var l1 := ""
var l2, l3 := leia_texto
var x, y := 0
para i de 2 ate n - 1 faca
l1, l2, l3 := l2, l3, leia_texto
se l2.contains("7 42 7") e l1.contains("7 7 7") e l3.contains("7 7 7") entao
p1, p2, p3 = l1.divida(" "), l2.divida(" "), l3.divida(" ")
para j de 2 ate m - 1 faca
se p1[j-1] == "7" e p1[j] == "7" e p1[j+1] == "7" e
p2[j-1] == "7" e p2[j] == "42" e p2[j+1] == "7" e
p3[j-1] == "7" e p3[j] == "7" e p3[j+1] == "7" entao
x, y := i, j
fim
fim
fim
fim
escreva "{x} {y}"
2544 - Kage Bunshin no Jutsu
var n := leia_inteiro
enquanto n > 0 faca
escreva (log(n)/log(2)).arredonde
n := leia_inteiro
fim
1036 - Fórmula de Bhaskara
valores = leia_reais(" ")
a, b, c = valores[1], valores[2], valores[3]
delta = b ^ 2 - 4 * a * c
se a == 0 ou delta < 0 então
escreva "Impossivel calcular"
senão
escreva "R1 = {((-b) + raiz(delta)) / (2 * a) formato "%.5f"}"
escreva "R2 = {((-b) - raiz(delta)) / (2 * a) formato "%.5f"}"
fim
2630 - Escala de Cinza
t = leia_inteiro
para i de 1 ate t faca
conversao = leia_texto
rgb = leia_inteiros(" ")
r, g, b = rgb[1], rgb[2], rgb[3]
imprima "Caso #{i}: "
escreva escolha conversao
caso "min" => rgb.ordene[1]
caso "max" => rgb.ordene[3]
caso "mean" => (r + g + b) div 3
caso _ => (r * 30 + g * 59 + b * 11) div 100
fim
fim
1337 - Poker do Rei
var king := leia_inteiros(" ").ordene
enquanto king[1] > 0 faca
a, b, c = king[1], king[2], king[3]
resposta = se a == 13 entao "*"
senaose a == c entao "{a+1} {a+1} {a+1}"
senaose a < b e b < c entao "1 1 2"
senaose b < c e c == 13 entao "1 {a+1} {a+1}"
senaose b < c entao "{a} {a} {c+1}"
senaose a == 12 entao "1 1 1"
senaose a + 1 < b entao "{a+1} {b} {c}"
senao "{b} {b} {a+2}"
fim
escreva resposta
king := leia_inteiros(" ").ordene
fim
1024 - Criptografia
n = leia_inteiro
para i de 1 até n faça
m = leia_texto
metade = m.tamanho div 2
p1 = para c em m gere
se (c >= 'a' e c <= 'z') ou
(c >= 'A' e c <= 'Z') então (c + 3).caractere senão c fim
fim
p2 = p1.inverta
p3 = p2.pegue(metade) + p2.descarte(metade).mapeie(c => (c - 1).caractere)
escreva p3.junte("")
fim
1190 - Área Direita
o = leia_texto
nums = leia_reais(144)
var soma := 0.0
para j de 1 até 12, i de 13 - j até j - 2 faça
soma := soma + nums[i * 12 + j]
fim
se o == "S" então
escreva soma formato "%.1f"
senão
escreva soma / 30 formato "%.1f"
fim
1168 - LED
n = leia_inteiro
leds = [6, 2, 5, 5, 4, 5, 6, 3, 7, 6]
para i de 1 até n faça
num = leia_texto
var soma := 0
para s em num faça
soma := soma + leds[(s - '0').inteiro + 1]
fim
escreva "{soma} leds"
fim
2295 - Frota de Táxi
entrada = leia_reais(" ")
a = entrada[1]
g = entrada[2]
ra = entrada[3]
rg = entrada[4]
va = ra / a
vg = rg / g
se va > vg então
escreva "A"
senão
escreva "G"
fim
2306 - Escada Perfeita
n = leia_inteiro
cubos = leia_inteiros(" ")
soma = cubos.injete(0)(_ + _)
num = 2 * soma + n - n * n
den = 2 * n
a1 = num div den
resto = num mod den
resposta = se resto == 0 e a1 > 0 então
an = a1 + n - 1
indice = para i de a1 até an gere i fim
cubos.zip(indice)
.mapeie(a => (a.primeiro - a.segundo).abs)
.injete(0)(_ + _) div 2
senão
-1
fim
escreva resposta
3053 - Jogo Dos Copos
n = leia_inteiro
z = leia_texto
var a, b, c := z == "A", z == "B", z == "C"
para i de 1 ate n faça
x = leia_inteiro
escolha x
caso 1 => a, b := b, a
caso 2 => b, c := c, b
caso _ => a, c := c, a
fim
fim
se a então escreva "A"
senãose b então escreva "B"
senão escreva "C"
fim
2341 - Número de Envelopes
entrada = leia_inteiros(" ")
n, k = entrada[1], entrada[2]
xs = leia_inteiros(" ")
var envelopes = Lista.mutável(k, 0)
para x em xs faca
envelopes[x] := envelopes[x] + 1
fim
rotulos = envelopes.ordene[1]
escreva rotulos
2336 - ABC
var s := leia_texto
enquanto nao eof faça
abc = s.lista.mapeie(_ - 'A')
decimal = abc.injete(BigInt(0))((a,b) => (a * 26 + b) mod 1000000007)
escreva decimal
s := leia_texto
fim
2031 - Pedra, Papel, Ataque Aéreo
n = leia_inteiro
para i de 1 até n faça
jogador1, jogador2 = leia_texto
se jogador1 == jogador2 então
escolha jogador1
caso "ataque" => escreva "Aniquilacao mutua"
caso "pedra" => escreva "Sem ganhador"
caso _ => escreva "Ambos venceram"
fim
senãose jogador1 == "ataque" ou jogador2 == "papel" então
escreva "Jogador 1 venceu"
senão
escreva "Jogador 2 venceu"
fim
fim
3399 - Meu nome é Enésimo!
in = leia_inteiros(" ")
a, b, c, n = in[1], in[2], in[3], in[4]
enesimo = (n - 1) * (b - a) + a
escreva enesimo
1559 - 2048
mov(dir: Texto, b: Boolean) = se b então dir senão "" fim
n = leia_inteiro
para i de 1 até n faça
linhas = para j de 1 até 4 gere leia_inteiros(" ") fim
var up, down, left, right := falso
para x de 1 até 4 faça
linhax = linhas[x]
colunax = para j de 1 até 4 gere linhas[j][x] fim
para a de 1 até 3 faca
xa, xb, ax, bx = linhax[a], linhax[a+1], colunax[a], colunax[a+1]
xa0, xb0, xab, abx, ax0, bx0 = xa == 0, xb == 0, xa == xb, ax == bx, ax == 0, bx == 0
left := left ou (não xb0 e (xa0 ou xab))
right := right ou (não xa0 e (xb0 ou xab))
up := up ou (não bx0 e (ax0 ou abx))
down := down ou (não ax0 e (bx0 ou abx))
fim
fim
jogadas = mov(" DOWN", down) + mov(" LEFT", left) + mov(" RIGHT", right) + mov(" UP", up)
se jogadas == "" ou linhas.injete([0])(_ + _).posição(2048) > 0 então
escreva "NONE"
senão
escreva jogadas.cauda
fim
fim
1105 - Sub-prime
var n := leia_inteiros(2)
enquanto n[1] <> 0 ou n[2] <> 0 faça
var reservas = leia_inteiros(n[1])
para i de 1 até n[2] faça
m = leia_inteiros(3)
reservas[m[2]] := reservas[m[2]] + m[3]
reservas[m[1]] := reservas[m[1]] - m[3]
fim
se reservas.selecione(_ < 0).tamanho > 0 então
escreva "N"
senão
escreva "S"
fim
n := leia_inteiros(2)
fim
3167 - Procurando Palavras na Diagonal Secundária
contem(texto, palavra: Texto) =
texto.contains(palavra) ou texto.contains(palavra.inverta)
entrada = leia_inteiros(" ")
n, m, p = entrada[1], entrada[2], entrada[3]
palavras = leia_textos(n).mapeie(_.minusculo)
letras = leia_textos(m).mapeie(_.minusculo).junte("")
secundaria = para i de 1 ate m gere letras[i * (m - 1) + 1] fim.junte("")
superior = para i de 1 ate m-6 gere para j de 1 ate m-i gere letras[j * (m - 1) - i + 1] fim.junte("") fim.junte("|")
inferior = para i de 1 ate m-6 gere para j de 1 ate m-i gere letras[(m - j) * m + i + j] fim.junte("") fim.junte("|")
para p em palavras faca
se contem(secundaria, p) entao
escreva "1 Palavra {'"'}{p}{'"'} na diagonal secundaria"
senaose contem(superior, p) entao
escreva "2 Palavra {'"'}{p}{'"'} acima da diagonal secundaria"
senaose contem(inferior, p) entao
escreva "3 Palavra {'"'}{p}{'"'} abaixo da diagonal secundaria"
senao
escreva "4 Palavra {'"'}{p}{'"'} inexistente"
fim
fim
1237 - Comparação de Substring
pos(s: Texto, c: Caractere, n: Inteiro): Inteiro
var i := n
enquanto i <= s.tamanho e s[i] <> c faca
i := i + 1
fim
se i <= s.tamanho entao i senao 0 fim
fim
comparar(a, b: Texto, p_a, p_b, soma: Inteiro): Inteiro =
se p_a > a.tamanho ou p_b > b.tamanho ou a[p_a] <> b[p_b] entao
soma
senao
comparar(a, b, p_a + 1, p_b + 1, soma + 1)
fim
var a := leia_texto
enquanto nao eof faca
b = leia_texto
var resposta := 0
para inicio_a de 1 ate a.tamanho faca
var inicio_b := pos(b, a[inicio_a], 1)
enquanto inicio_b > 0 faca
tam = comparar(a, b, inicio_a, inicio_b, 0)
se tam > resposta entao
resposta := tam
fim
inicio_b := pos(b, a[inicio_a], inicio_b + 1)
fim
fim
escreva resposta
a:= leia_texto
fim
3477 - Baú Danificado
a = leia_inteiros(" ")
x, y, z = a[1], a[2], a[3]
se x*x == y*y + z*z então
area = (y + 3 * z / 4) * z / 2
escreva "AREA = {area.inteiro}"
senão
escreva "Nao eh retangulo!"
fim
1031 - Crise de Energia
last(x, m: Inteiro)
var next := 1
var regions = para i de 1 ate x gere i fim
para tamanho de x-1 ate 1 passo -1 faca
regions := regions.remova(next)
next := (next - 2 + m) mod tamanho + 1
fim
retorne regions[1]
fim
var x:= leia_inteiro
enquanto x > 0 faça
var m := 1
enquanto last(x, m) <> 13 faça
m := m + 1
fim
escreva m
x := leia_inteiro
fim
##Solução 2 - Mais eficiente
#last(x, m: Inteiro)
# var a := 1
# para i de 1 ate x - 1 faca
# a := (a + m - 1) mod i + 1
# fim
# retorne a + 1
#fim
## Solução 3
#last(x, m: Inteiro)
# var regions := Lista.mutável(x, verdadeiro) # [1, 2, ...]
# var next := 1
# para tamanho de x-1 até 1 passo -1 faca
# regions[next] := falso
# var n := m # var n := (m-1) mod tamanho + 1
# enquanto n > 0 faça
# next := next mod x + 1
# se regions[next] entao n := n - 1 fim
# fim
# fim
# retorne next
#fim
## Solução 4 - Usando um Zipper
#tipo Zipper
# var direita: Lista[Inteiro]
# var esquerda: Lista[Inteiro] := []
# var tamanho := direita.tamanho
# var pos := 1
#
# foco() = direita[1]
# lista() = esquerda.inverta + direita
#
# mova(p: Inteiro): Nada
# pp = (p-1) mod tamanho + 1
# para i de pos até pp-1 faca
# esquerda := direita.cabeca::esquerda
# direita := direita.cauda
# fim
# para i de pp até pos-1 faça
# direita := esquerda.cabeca::direita
# esquerda := esquerda.cauda
# fim
# pos := pp
# fim
#
# remova()
# se direita <> [] então
# direita := direita.cauda
# senao
# esquerda := esquerda.cauda
# fim
# tamanho := tamanho - 1
# fim
#fim
#
#last(x, m: Inteiro)
# var regions = para i de 1 ate x gere i fim
# z = Zipper(regions)
# para i de 1 ate x - 1 faca
# z.remova
# z.mova(z.pos + m - 1)
# fim
# retorne z.foco
#fim
2463 - Corredor
leia_texto
var a := leia_inteiros(" ")
var soma, aux := 0
var tam := a.tamanho
enquanto tam > 0 faca
soma := soma + a[1]
se soma > aux entao aux := soma fim
se soma < 0 entao
soma := 0
fim
a := a.cauda
tam := tam - 1
fim
escreva aux
3397 - Melhor do Multiverso
pergunta = leia_texto
escreva("eu")
2787 - Xadrez
l, c = leia_inteiro
escreva (l + c + 1) mod 2
2427 - Chocolate
pedacos(lado: Inteiro): Inteiro =
se lado < 2 entao 1
senao
a = lado div 2
4 * pedacos(a)
fim
l = leia_inteiro
escreva pedacos(l)
1179 - Preenchimento de Vetor IV
esvaziar(a: Lista[Inteiro], nome: Texto)
l = a.inverta
para i de 1 até l.tamanho faça
escreva "{nome}[{i-1}] = {l[i]}"
fim
fim
num = leia_inteiros(15)
var par, impar = [0].cauda
para n em num faça
se n mod 2 == 0 então
par := n :: par
senão
impar := n :: impar
fim
se par.tamanho >= 5 então
esvaziar(par, "par")
par := [0].cauda
fim
se impar.tamanho >= 5 então
esvaziar(impar, "impar")
impar := [0].cauda
fim
fim
esvaziar(impar, "impar")
esvaziar(par, "par")
1549 - Dividindo a Coca
x = leia_inteiro
para i de 1 até x faça
a = leia_inteiros(2)
b = leia_inteiros(3)
media = a[2] / a[1]
temp = (media * 3 * (b[2] - b[1]) / (PI * b[3]) + b[1] ^ 3) ^ (1/3)
escreva media * 3 / (PI * (temp ^ 2 + temp * b[1] + b[1] ^ 2)) formato "%.2f"
fim
1110 - Jogando Cartas Fora
var n := leia_inteiro
impar = para i de 1 ate 50 passo 2 gere i fim
par = para i de 2 ate 50 passo 2 gere i fim
vazia = [0].cauda
enquanto n > 0 faca
var cartas := par.pegue(n div 2)
var descartes, pilha: Lista[Inteiro] := []
var descartar := n mod 2 == 0
enquanto cartas.tamanho + pilha.tamanho > 1 faca
se cartas == [] entao
cartas := pilha.inverta
pilha := vazia
fim
topo = cartas.cabeca
cartas := cartas.cauda
se descartar entao
descartes := topo :: descartes
senao
pilha := topo :: pilha
fim
descartar := nao descartar
fim
descartes := impar.pegue((n+1) div 2) + descartes.inverta
escreva "Discarded cards: {descartes.junte(", ")}"
escreva "Remaining card: {(cartas + pilha).cabeca}"
n := leia_inteiro
fim
1305 - Arredondamento por Valor de Corte
dec(r: Real) = r - r.inteiro
var a := leia_texto
enquanto não eof faça
n = a.real
c = leia_real
escreva se dec(n) < dec(c) então n.inteiro senão (n+1).inteiro fim
a := leia_texto
fim
1437 - Esquerda, Volver!
dir(c: Caractere) = se c == 'D' entao 1 senao -1 fim
direcoes = "LSONLSO"
var n := leia_inteiro
enquanto n > 0 faca
comandos = leia_texto
frente = comandos.lista.mapeie(dir).injete(0)(_ + _)
direcao = direcoes[frente mod 4 + 4]
escreva direcao
n := leia_inteiro
fim
1855 - Mapa do Meistre
n, m = leia_inteiro
a = leia_textos(m)
dfs(x, y, dx, dy: Inteiro, vis: Lista[(Inteiro, Inteiro)]): Lógico =
se x < 1 ou x > m ou y < 1 ou y > n ou vis.contém((x, y))
falso
senão
vis2 = (x, y) :: vis
escolha a[x][y]
caso '*' => verdadeiro
caso '>' => dfs(x, y + 1, 0, 1, vis2)
caso '<' => dfs(x, y - 1, 0, -1, vis2)
caso '^' => dfs(x - 1, y, -1, 0, vis2)
caso 'v' => dfs(x + 1, y, 1, 0, vis2)
caso _ => dfs(x + dx, y + dy, dx, dy, vis)
fim
fim
ans = dfs(1, 1, 0, 1, [])
se ans então
escreva "*"
senão
escreva "!"
fim
1200 - Operações em ABP I
tipo Valor = Caractere
tipo abstrato No
valor(): Valor
esquerda(): No
direita(): No
inserir(v: Valor): No
altura(): Inteiro
pesquisar(v: Valor): Lógico
infixa(): Lista[Valor]
prefixa(): Lista[Valor]
posfixa(): Lista[Valor]
fim
max(a, b: Inteiro) = se a >= b então a senão b fim
tipo Arvore: No
valor: Valor
esquerda, direita: No
altura = max(esquerda.altura, direita.altura) + 1
inserir(v: Valor): No =
se v < valor então
Arvore(valor, esquerda.inserir(v), direita)
senão
Arvore(valor, esquerda, direita.inserir(v))
fim
pesquisar(v: Valor) =
v == valor ou
(se v < valor então esquerda.pesquisar(v) senão direita.pesquisar(v) fim)
infixa() = esquerda.infixa + valor :: direita.infixa
prefixa() = valor :: esquerda.prefixa + direita.prefixa
posfixa() = esquerda.posfixa + direita.posfixa + [valor]
fim
tipo Folha: No
valor: Valor = valor
esquerda, direita = isto
altura = -1
inserir(v: Valor): No = Arvore(v, Folha(), Folha())
pesquisar(v: Valor) = falso
infixa, prefixa, posfixa: Lista[Valor] = []
fim
var arvore: No := Folha()
var entrada := leia_texto
enquanto nao eof faça
a = entrada.divida(" ")
escolha a[1]
caso "I" => arvore := arvore.inserir(a[2][1])
caso "P" => valor = a[2][1]
se arvore.pesquisar(valor) então
escreva "{valor} existe"
senão
escreva "{valor} nao existe"
fim
caso "INFIXA" => escreva arvore.infixa.junte(" ")
caso "POSFIXA" => escreva arvore.posfixa.junte(" ")
caso "PREFIXA" => escreva arvore.prefixa.junte(" ")
caso _ =>
fim
entrada := leia_texto
fim
1158 - Soma de Ímpares Consecutivos III
n = leia_inteiro
para i de 1 até n faça
entrada = leia_inteiros(" ")
x = entrada[1].inteiro div 2 * 2 + 1
y = entrada[2].inteiro
escreva (x + y - 1)* y
fim
1924 - Vitória e a Indecisão
n = leia_inteiro
leia_textos(n)
escreva "Ciencia da Computacao"
1005 - Média 1
a = leia_real
b = leia_real
media = (a * 3.5 + b * 7.5) / 11
escreva "MEDIA = {media formato "%.5f"}"
1068 - Balanço de Parênteses I
var s:= leia_texto
enquanto nao eof faça
s := s.selecione(c => c=='(' ou c==')')
var a := 0
var correto := verdadeiro
para i de 1 até s.tamanho faça
se s[i] == '(' então
a := a + 1
senão
a := a - 1
fim
se a < 0 então
correto := falso
fim
fim
se correto e a == 0 então
escreva "correct"
senão
escreva "incorrect"
fim
s:= leia_texto
fim
2808 - Mais Cavalos
p = leia_textos(" ")
p1 = p[1]
p2 = p[2]
d1 = p1[1].inteiro - p2[1].inteiro
d2 = p1[2].inteiro - p2[2].inteiro
se (d1 * d2).abs == 2 então
escreva "VALIDO"
senão
escreva "INVALIDO"
fim
2381 - Lista de Chamada
a = leia_inteiros(" ")
n, k = a[1], a[2]
nomes = leia_textos(n)
escreva nomes.ordene[k]
2395 - Transporte de Contêineres
c = leia_inteiros(" ")
n = leia_inteiros(" ")
escreva (n[1] div c[1]) * (n[2] div c[2]) * (n[3] div c[3])
2062 - OBI URI
n = leia_inteiro
palavras = leia_textos(" ")
a = para palavra em palavras gere
ini = palavra.pegue(2)
se palavra.tamanho <> 3 ou (ini <> "OB" e ini <> "UR") entao
palavra
senao
ini + "I"
fim
fim
escreva a.junte(" ")
1808 - O Retorno do Rei
numeros = leia_texto.lista.mapeie(_ - '0')
soma = numeros
.mapeie(a => se a == 0 então 9 senão a fim)
.injete(0)(_ + _)
media = soma / numeros.selecione(_ > 0).tamanho
escreva media formato "%.2f"
1618 - Colisão
n = leia_inteiro
para i de 1 até n faça
entrada = leia_inteiros(" ")
a = entrada.pegue(2)
c = entrada.descarte(4).pegue(2)
r = entrada.descarte(8).pegue(2)
resposta =
se a[1] <= r[1] e a[2] <= r[2] e c[1] >= r[1] e [2] >= r[2]
então 1 senão 0 fim
escreva resposta
fim
3040 - A Árvore de Natal
n = leia_inteiro
para i de 1 até n faça
a = leia_inteiros(" ")
h, d, g = a[1], a[2], a[3]
se h >= 200 e h <= 300 e d >= 50 e g >= 150 então
escreva "Sim"
senão
escreva "Nao"
fim
fim
1073 - Quadrado de Pares
n = leia_inteiro
para i de 2 até n passo 2 faça
escreva "{i}^2 = {i*i}"
fim
1142 - PUM
n = leia_inteiro
para i de 1 até n faça
escreva "{i*4-3} {i*4-2} {i*4-1} PUM"
fim
1793 - Escada Rolante
enquanto leia_inteiro > 0 faca
t = leia_inteiros(" ")
d = t.divida_quando((a, b) => b - a > 10)
var tempo := 0
para p em d faca
dt = 10 + p[-1] - p[1]
tempo := tempo + dt
fim
escreva tempo
fim
1533 - Detetive Watson
var n := leia_inteiro
enquanto n > 0 faca
v = leia_inteiros(" ")
a = v.ordene[-2]
p = v.posicao(a)
escreva p
n := leia_inteiro
fim
1041 - Coordenadas de um Ponto
entrada = leia_reais(" ")
x, y = entrada[1], entrada[2]
escolha (x, y)
caso (0.0, 0.0) => escreva "Origem"
caso (_, 0.0) => escreva "Eixo X"
caso (0.0, _) => escreva "Eixo Y"
caso (x, y) se x > 0 e y > 0 => escreva "Q1"
caso (_, y) se y > 0 => escreva "Q2"
caso (x, _) se x < 0 => escreva "Q3"
caso _ => escreva "Q4"
fim
1173 - Preenchimento de Vetor I
v = leia_inteiro
var n := v
para i de 0 até 9 faça
escreva "N[{i}] = {n}"
n := 2 * n
fim
3135 - Lista de Nomes
n = leia_inteiro
vazia = Lista(0, "")
var nomes = Lista(20, vazia)
para i de 1 ate n faca
nome = leia_texto
t = nome.tamanho
nomes[t] := nome :: nomes[t]
fim
nomes := nomes.mapeie(_.inverta).selecione(_.tamanho > 0)
enquanto nomes.tamanho > 0 faca
escreva (para m em nomes gere m.cabeca fim).junte(", ")
nomes := nomes.mapeie(_.cauda).selecione(_.tamanho > 0)
fim
1078 - Tabuada
n = leia_inteiro
para i de 1 até 10 faça
escreva "{i} x {n} = {i * n}"
fim
1426 - Coloque Tijolos na Parede
tijolos(x: Lista[Lista[Inteiro]])
para i de 1 até 9 gere
para j de 1 até i gere
a = i div 2
b = (j + 1) div 2
escolha (i mod 2, j mod 2)
caso (0, 1) => (x[a][b] + x[a+1][b] - x[a+1][b+1]) div 2
caso (0, 0) => (x[a][b] - x[a+1][b] + x[a+1][b+1]) div 2
caso (1, 0) => (x[a][b] - x[a+1][b] - x[a+1][b+1]) div 2
caso _ => x[a+1][b]
fim
fim
fim
fim
t = leia_inteiro
para i de 1 até t faça
x = Lista(5, leia_inteiros(" "))
escreva tijolos(x).mapeie(_.junte(" ")).junte("\n")
fim
3217 - Chuva Caindo
a = leia_reais(" ")
l, k, t1, t2, h = a[1], a[2], a[3], a[4], a[5]
solução(a, b, c: Real)
retorne (b + raiz(b^2 - 4 * a * c)) / (2 * a)
fim
min_max = se l > h então (h, h)
senão
# k * l * t1 + f ^ 2 == f * (h + k * (t1 + t2))
f = solução(1, h + k * (t1 + t2), k * l * t1)
se l < h então (f, f)
senão (h, f)
fim
fim
escreva "{min_max.primeiro formato "%.9f"} {min_max.segundo formato "%.9f"}"
3049 - Nota Cortada
b, t = leia_inteiro
soma = b + t
valor = se soma > 160 entao 1 senaose soma < 160 entao 2 senao 0 fim
escreva valor
2686 - A Mudança Continua!!
var entrada := leia_texto
enquanto nao eof faça
grau = entrada.real mod 360
se grau < 90 então
escreva "Bom Dia!!"
senãose grau < 180 então
escreva "Boa Tarde!!"
senãose grau < 270 então
escreva "Boa Noite!!"
senão
escreva "De Madrugada!!"
fim
angulo = (grau + 90) mod 360
horas = (angulo / 15).inteiro
minutos = ((angulo - horas * 15) * 4).inteiro
segundos = (angulo - horas * 15 - minutos / 4).inteiro
escreva "{horas formato "%02d"}:{minutos formato "%02d"}:{segundos formato "%02d"}"
entrada := leia_texto
fim
1310 - Lucro
max(a, b: Inteiro) = se a > b então a senão b fim
lucro_máximo(n, custo_dia: Inteiro, receitas: Lista[Inteiro])
var max_atual, max_total := 0
para valor em receitas faça
max_atual := max(0, max_atual) + valor - custo_dia
se max_atual > max_total então max_total := max_atual fim
fim
retorne max_total
fim
var n:= leia_inteiro
enquanto n > 0 faça # EOF
custo_dia = leia_inteiro
receitas = leia_inteiros(n)
resultado = lucro_máximo(n, custo_dia, receitas)
escreva resultado
n := leia_inteiro
fim
3004 - Envelopes
n = leia_inteiro
para i de 1 até n faça
a = leia_inteiros(" ")
envelope1 = a.pegue(2).ordene
envelope2 = a.descarte(2).ordene
pode_colocar = envelope1[1] < envelope2[1] e envelope1[2] < envelope2[2]
se pode_colocar entao
escreva "S"
senao
escreva "N"
fim
fim
1867 - Maior Número de Um Algarismo
var entrada := leia_texto.divida(" ")
enquanto entrada <> ["0", "0"] faça
var a, b := 0
para i em entrada[1] faça
a := a + (i - '0')
se a > 9 então a:= a - 9 fim
fim
para i em entrada[2] faça
b := b + (i - '0')
se b > 9 então b:= b - 9 fim
fim
se a > b então
escreva 1
senãose b > a então
escreva 2
senão
escreva 0
fim
entrada := leia_texto.divida(" ")
fim
3175 - Os Presentes Do Noel
n = leia_inteiro
g = leia_inteiros(" ")
h = g.ordene
.divida_quando(_ <> _)
.mapeie(_.tamanho)
presentes = h.zip(para i de 1 ate h.tamanho gere i fim)
soma = presentes.injete(0)((a, b) => a + b.primeiro * b.segundo)
escreva soma
1164 - Número Perfeito
n = leia_inteiro
para i de 1 até n faça
a = leia_inteiro
var soma := 1
rz = raiz(a).inteiro
para j de 2 até rz se a mod j == 0 faça
soma := soma + j + a div j
fim
se rz * rz == a então
soma := soma - rz
fim
se soma == a então
escreva "{a} eh perfeito"
senão
escreva "{a} nao eh perfeito"
fim
fim
3446 - Quadrados Vazios
vazios(x, y: Inteiro, livres: Lista[Inteiro]) =
para peça1 em livres.selecione(_ <= x) + [0],
peça2 em livres.selecione(_ <= x - peça1) - [peça1] + [0],
peça3 em livres.selecione(_ <= y) - [peça1, peça2] + [0],
peça4 em livres.selecione(_ <= y - peça3) - [peça1, peça2, peça3] + [0] gere
x + y - (peça1 + peça2 + peça3 + peça4)
fim.ordene.cabeça
a = leia_inteiros(" ")
E, K, D = a[3], a[2], a[1] - a[2] - a[3]
x = se E < 5 então E senão 0 fim
y = se D < 5 então D senão 0 fim
peças = [1, 2, 3, 4] - [K]
escreva vazios(x, y, peças)
2434 - Saldo do Vovô
x = leia_inteiros(" ")
n = x[1]
var saldo := x[2]
mov = leia_inteiros(n)
var menor := saldo
para i em mov faça
saldo := saldo + i
se saldo < menor então
menor := saldo
fim
fim
escreva menor
2712 - Rodízio Veicular
n = leia_inteiro
para i de 1 até n faça
placa = leia_texto.lista
se placa.tamanho <> 8 ou placa[4] <> '-' ou
placa.pegue(3).mapeie(a => a<'A' ou a >'Z').injete(falso)((a,b) => a ou b) ou
placa.descarte(4).mapeie(a => a<'0' ou a >'9').injete(falso)((a,b) => a ou b) então
escreva "FAILURE"
senão
ultimo = placa.descarte(7).junte("").inteiro
se ultimo==1 ou ultimo==2 então escreva "MONDAY"
senãose ultimo==3 ou ultimo==4 então escreva "TUESDAY"
senãose ultimo==5 ou ultimo==6 então escreva "WEDNESDAY"
senãose ultimo==7 ou ultimo==8 então escreva "THURSDAY"
senão escreva "FRIDAY"
fim
fim
fim
2168 - Crepúsculo em Portland
n = leia_inteiro
res = Matriz.mutável(n, n, 'S')
mat = para i de 1 até n + 1 gere leia_inteiros(" ") fim
para i de 1 até n, j de 1 até n faça
se mat[i][j] + mat[i][j+1] + mat[i+1][j] + mat[i+1][j+1] < 2 então
res[i][j] := 'U'
fim
fim
para linha em res faça
escreva linha.junte("")
fim
1761 - Decoração Natalina
var s := leia_texto
rg = 3.141592654/180
enquanto nao eof faca
r = s.divida(" ").mapeie(_.real)
a, b, c = r[1], r[2], r[3]
x = c + b * tg(a * rg)
escreva 5 * x formato "%.2f"
s := leia_texto
fim
3313 - Jogo de Palavras
rot(a: Texto, f: Logico)
tam = a.tamanho
var x := a + a
var valor := x.pegue(tam)
enquanto x.tamanho >= tam faca
m = x.pegue(tam)
se f e m < valor ou nao f e m > valor entao
valor := m
fim
primeiro = valor[1]
se f entao
x := x.cauda.descarte_enquanto(_ > primeiro)
senao
x := x.cauda.descarte_enquanto(_ < primeiro)
fim
fim
retorne valor
fim
var n := 0
var s := leia_texto
enquanto s <> "*" faca
menor = rot(s, verdadeiro)
maior = rot(s, falso)
n := n + 1
escreva "Caso {n}: {menor} {maior}"
s := leia_texto
fim
2146 - Senha
var n := leia_inteiro
enquanto n > 0 faça
escreva n - 1
n := leia_inteiro
fim
1222 - Concurso de Contos
var input := leia_texto
enquanto input <> "" e input <> nulo e input <> "-1" faça
var in := input.divida(" ")
var n = in[1].inteiro
var l = in[2].inteiro
var c = in[3].inteiro
var paginas := 1
var linhas := 1
var texto := leia_texto
lista_palavras = texto.divida(" ")
var letras := lista_palavras[1].tamanho
para i de 2 ate lista_palavras.tamanho faca
palavra = lista_palavras[i]
x = palavra.tamanho
se (letras + x + 1) <= c entao
letras := letras + x + 1
senao
linhas := linhas + 1
se linhas > l entao
paginas := paginas + 1
linhas := 1
fim
letras := x
fim
fim
escreva paginas
input := leia_texto
fim
1196 - WERTYU
teclas = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;\'ZXCVBNM,./"
var entrada := leia_texto
enquanto nao eof faca
mensagem = para c em entrada gere
se c == ' ' então ' ' senão teclas[teclas.posição(c) - 1] fim
fim.junte("")
escreva mensagem
entrada := leia_texto
fim
1366 - Jogo de Varetas
var n := leia_inteiro
enquanto n > 0 faça
var pares := 0
para i de 1 ate n faça
v = leia_inteiros(" ")[2] div 2
pares := pares + v
fim
retangulos = pares div 2
escreva retangulos
n := leia_inteiro
fim
2516 - Corrida
var b := leia_inteiros(" ")
enquanto nao eof faca
v = b[2] - b[3]
se v > 0 entao
s = b[1]
escreva s / v formato "%.2f"
senao
escreva "impossivel"
fim
b := leia_inteiros(" ")
fim
2869 - Falando em Divisor…
a = [1, 2, 4, 6, 16, 12, 64, 24, 36, 48, 1024, 60, 4096, 192, 144, 120, 65536, 180, 262144, 240, 576, 3072, 4194304, 360, 1296, 12288, 900, 960, 268435456, 720, 73741817, 840, 9216, 196608, 5184, 1260, 719476260, 786432, 36864, 1680, 511620083, 2880, 46480318, 15360, 3600, 12582912, 743685088, 2520, 46656, 6480, 589824, 61440, 595845303, 6300, 82944, 6720, 2359296, 805306368, 134099126, 5040, 536396504, 221225451, 14400, 7560, 331776, 46080, 329376018, 983040, 37748736, 25920, 270016253, 10080, 80065005, 158428766, 32400, 3932160, 746496, 184320, 124160285, 15120, 44100, 534860242, 986564553, 20160, 5308416, 139440954, 415919090, 107520, 140130951, 25200, 2985984, 62914560, 663676353, 231055250, 21233664, 27720, 873523211, 233280, 230400, 45360]
n = leia_inteiro
para i de 1 até n faça
escreva a[leia_inteiro]
fim
1095 - Sequencia IJ 1
var i, j := 1, 60
enquanto j >= 0 faça
escreva "I={i} J={j}"
i := i + 3
j := j - 5
fim
3103 - Número da Sorte
t = leia_inteiro
para i de 1 ate t faca
n = leia_texto.ordene
a = n.pegue_enquanto(_ == '0')
b = n.descarte_enquanto(_ == '0')
escreva "{b.cabeça}{a}{b.cauda}"
fim
1001 - Extremamente Básico
a, b = leia_inteiro
escreva "X = {a + b}"
1914 - De Quem é a Vez?
qt = leia_inteiro
para i de 1 até qt faça
nomes = leia_textos(" ")
a = leia_inteiros(" ")
par = (a[1] + a[2]) mod 2 == 0
se (par e nomes[2] == "PAR") ou
(não par e nomes[2] <> "PAR") então
escreva nomes[1]
senão
escreva nomes[3]
fim
fim
2763 - Entrada e Saída CPF
entrada = leia_texto
a = entrada.pegue(3)
b = entrada.descarte(4).pegue(3)
c = entrada.descarte(8).pegue(3)
d = entrada.descarte(12)
escreva a
escreva b
escreva c
escreva d
1243 - O Quão Fácil é…
var enunciado := leia_texto
enquanto nao eof faça
palavras = enunciado
.divida(" ")
.mapeie(p => se p.tamanho > 0 e p[-1] == '.' então p.pegue(p.tamanho - 1) senão p fim)
.selecione(p => p.tamanho > 0 e p.ordene[1] >= 'A')
.mapeie(_.tamanho)
se palavras.tamanho == 0 então
escreva 250
senão
media = palavras.injete(0)(_ + _) / palavras.tamanho
se media < 4 então
escreva 250 senãose media < 6 então
escreva 500 senão
escreva 1000 fim
fim
enunciado := leia_texto
fim
3249 - Death Knight Hero
n = leia_inteiro
var total := n
para i de 1 ate n faca
a = " {leia_texto} "
se a.divida("CD").tamanho > 1 entao
total := total - 1
fim
fim
escreva total
1441 - Sequências de Granizo
var maior := leia_inteiro
enquanto maior > 0 faça
var h := maior
enquanto h > 1 faça
se h > maior então
maior := h
fim
h := se h mod 2 == 0 então h div 2 senão 3 * h + 1 fim
fim
escreva maior
maior := leia_inteiro
fim
3088 - Correção de Texto
var a := leia_texto
enquanto a <> "" faca
s = a.split(" ,").mkString(",")
.split(" \\.").mkString(".")
escreva s
a := leia_texto
fim
1046 - Tempo de Jogo
entrada = leia_inteiros(" ")
inicio = entrada[1]
final = entrada[2]
d = final - inicio
duracao = se d > 0 então d senão d + 24 fim
escreva "O JOGO DUROU {duracao} HORA(S)"
3308 - Elevador
n = leia_inteiro
para i de 1 ate n faça
a = leia_inteiros(" ")
porta = a[1]
andares = a[2] + a[3] + a[4]
resposta = se andares > 1 então "X" senão (porta + andares) mod 2 fim
escreva resposta
fim
1650 - Pintura Preto e Branco
var entrada := leia_inteiros(" ")
enquanto entrada[1] > 0 faça
n, m, c = entrada[1], entrada[2], entrada[3]
escreva ((n - 7) * (m - 7) + c) div 2
entrada := leia_inteiros(" ")
fim
1921 - Guilherme e Suas Pipas
n = leia_inteiro
barbantes = n / 2 * (n - 3)
escreva barbantes formato "%.0f"
3140 - Copiando e Colando Código
enquanto leia_texto
.descarte_enquanto(_ == ' ')
.pegue(6) <> "<body>" faca
fim
var s := leia_texto
enquanto s.descarte_enquanto(_ == ' ').pegue(7) <> "</body>" faca
escreva s
s := leia_texto
fim
1803 - Matring
entrada1 = leia_texto
entrada2 = leia_texto
entrada3 = leia_texto
entrada4 = leia_texto
f = (entrada1.cabeça.texto +
entrada2.cabeça.texto +
entrada3.cabeça.texto +
entrada4.cabeça.texto).inteiro
l = (entrada1.último.texto +
entrada2.último.texto +
entrada3.último.texto +
entrada4.último.texto).inteiro
var palavra := ""
para i de 2 até (entrada1.tamanho - 1) faça
caractere = ((f *
(entrada1[i].texto +
entrada2[i].texto +
entrada3[i].texto +
entrada4[i].texto).inteiro + l) mod 257).caractere
palavra := palavra + caractere
fim
escreva palavra
2136 - Amigos do Habay
limpe(lista: Lista[Texto]) =
lista.ordene.divida_quando(_ <> _).mapeie(_.cabeca)
var yes, no := Lista(0, "")
var amigo := ""
var entrada := leia_textos(" ")
enquanto entrada[1] <> "FIM" faca
se entrada[2] == "YES" entao
yes := entrada[1] :: yes
se entrada[1].tamanho > amigo.tamanho entao
amigo := entrada[1]
fim
senao
no := entrada[1] :: no
fim
entrada := leia_textos(" ")
fim
escreva limpe(yes).junte("\n")
escreva limpe(no).junte("\n")
escreva ""
escreva "Amigo do Habay:"
escreva amigo
1228 - Grid de Largada
ultrapassagens(grid, chegada: Lista[Inteiro], total: Inteiro): Inteiro =
se grid == [] então
total
senãose grid.cabeça == chegada.cabeça então
ultrapassagens(grid.cauda, chegada.cauda, total)
senão
a = grid.posição(chegada.cabeça) - 1
ultrapassagens(grid - [chegada.cabeça], chegada.cauda, total + a)
fim
var n := leia_inteiro
enquanto n > 0 faça
grid, chegada = leia_inteiros(" ")
escreva ultrapassagens(grid, chegada, 0)
n := leia_inteiro
fim
1709 - Baralho Embaralhado
p = leia_inteiro
embaralhar(a, c: Inteiro): Inteiro
b = se 2 * a <= p entao 2 * a senao 2 * a - (p + 1) fim
retorne se b == 1 entao c senao embaralhar(b, c + 1) fim
fim
escreva embaralhar(1, 1)
3342 - Keanu
n = leia_inteiro
qntTotalCasas = n*n
se n mod 2 == 0 então
a = qntTotalCasas div 2
b = a
escreva "{a} casas brancas e {b} casas pretas"
senão
a = (qntTotalCasas+1) div 2
b = a-1
escreva "{a} casas brancas e {b} casas pretas"
fim
1871 - Zero vale Zero
var a := leia_inteiros(" ")
enquanto a[1] <> 0 faca
m, n = a[1], a[2]
soma = m + n
s = soma.texto.selecione(_ <> '0')
escreva s
a := leia_inteiros(" ")
fim
2708 - Turistas no Parque Huacachina
var entrada := leia_textos(" ")
var turistas, jipes := 0
enquanto entrada[1] <> "ABEND" faca
j, t = entrada[1], entrada[2].inteiro
se j == "SALIDA" entao
jipes := jipes + 1
turistas := turistas + t
senao
jipes := jipes - 1
turistas := turistas - t
fim
entrada := leia_textos(" ")
fim
escreva turistas
escreva jipes
2654 - Godofor
tipo Ser
nome: Texto
poder, kill, morte: Inteiro
fim
lt = (s1, s2: Ser) =>
se s1.poder <> s2.poder entao s1.poder > s2.poder
senaose s1.kill <> s2.kill entao s1.kill > s2.kill
senaose s1.morte <> s2.morte entao s1.morte < s2.morte
senao s1.nome < s2.nome
fim
n = leia_inteiro
seres = para i de 1 ate n gere
a = leia_textos(" ")
Ser(a[1], a[2].inteiro, a[3].inteiro, a[4].inteiro)
fim
godofor = seres.ordene(lt).cabeca
escreva godofor.nome
3204 - Honeycomb Walk
n = leia_inteiro
para i de 1 ate n faca
a = leia_inteiro
b = escolha a
caso 1 => 0
caso 2 => 6
caso 3 => 12
caso 4 => 90
caso 5 => 360
caso 6 => 2040
caso 7 => 10080
caso 8 => 54810
caso 9 => 290640
caso 10=> 1588356
caso 11=> 8676360
caso 12=> 47977776
caso 13=> 266378112
caso _ => 1488801600
fim
escreva b
fim
n = leia_inteiro
a, b = leia_texto
c = se n mod 2 == 0 entao b senao b.mapeie(c => se c == '1' então '0' senão '1' fim) fim
se a == c então
escreva "Deletion succeeded"
senão
escreva "Deletion failed"
fim
1287 - Processador Amigável de Inteiros
var s := leia_texto
enquanto nao eof faca
x = s.selecione(c => c <> ',' e c <> ' ')
.mapeie(c => escolha c
caso 'l' => '1'
caso 'o' => '0'
caso 'O' => '0'
caso _ => c
fim )
.injete("")((a, b) => se a == "0" entao "{b}" senao "{a}{b}" fim)
erro = x.selecione(c => c < '0' ou c > '9') <> ""
se x <> "" e nao erro e (x.tamanho < 10 ou x.tamanho == 10 e x <="2147483647") entao
escreva x.inteiro
senao
escreva "error"
fim
s := leia_texto
fim
2603 - Endereço dos Clientes
use sql
tipo Clientes: Tabela
_tabela = "customers"
nome = campo("name")
rua = campo("street")
cidade = campo("city")
fim
c = Clientes()
consulta = Selecionar()
.tabela(c)
.campos([c.nome, c.rua])
.onde(c.cidade == "Porto Alegre")
.sql
escreva consulta
2328 - Chocolate
n = leia_inteiro
a = leia_inteiros(" ")
s = a.injete(0)(_ + _) - n
escreva s
1430 - Composição de Jingles
d = para i de 'A' ate 'Z' gere 2 ^ (1 - "WHQESTX".posicao(i)) fim
valor(id: Caractere) = d[id - 'A' + 1]
soma(valor: Caractere => Real) =
(n: String) => n.lista.mapeie(valor).injete(0.0)(_ + _)
duracao = soma(valor)
var entrada := leia_texto
enquanto entrada <> "*" faca
compassos = entrada.divida("/")
duracoes = compassos.mapeie(duracao)
escreva duracoes.selecione(_ == 1.0).tamanho
entrada := leia_texto
fim
1985 - MacPRONALTS
n = leia_inteiro
var soma := 0.0
para i de 1 até n faça
in = leia_inteiros(" ")
p, q = in[1], in[2]
soma := soma + (p - 999.5) * q
fim
escreva soma formato "%.2f"
1760 - Floco de Neve de Koch
var l := leia_inteiro
enquanto l <> 0 faça
area = l ^ 2 * 0.6928203230275509
escreva area formato "%.2f"
l := leia_inteiro
fim
2667 - Jogo de Boca
n = leia_texto
var s := 0
para i de 1 até n.tamanho faça
s := s + (n[i]-'0')
fim
escreva s mod 3
2339 - Aviões de Papel
a = leia_inteiros(" ")
c, p, f = a[1], a[2], a[3]
se c * f <= p entao
escreva "S"
senão
escreva "N"
fim
3046 - Dominó
n = leia_inteiro
r = (n + 1) * (n + 2) div 2
escreva r
2755 - Saída 9
escreva "\"Ro'b'er\tto\\/\""
escreva "(._.) ( l: ) ( .-. ) ( :l ) (._.)"
escreva "(^_-) (-_-) (-_^)"
escreva "(\"_\") ('.')"
2444 - Volume da TV
min(x, y: Inteiro) = se x < y então x senão y fim
max(x, y: Inteiro) = se x > y então x senão y fim
v = leia_inteiros(" ")[1]
var a := leia_inteiros(" ")
escreva a.injete(v)((x, y) => max(min(x + y, 100), 0))
2217 - Nove
t = leia_inteiro
para i de 1 até t faça
n = leia_inteiro
escreva se n mod 2 == 0 então 1 senão 9 fim
fim
1323 - Feynman
var a = Lista(100, 1)
para i de 2 ate 100 faca
a[i] := a[i-1] + i * i
fim
var n := leia_inteiro
enquanto n > 0 faca
escreva a[n]
n := leia_inteiro
fim
1279 - Ano Bissexto ou Ano não Bissexto
somar(digitos: Lista[Inteiro], soma: Inteiro): Inteiro =
se digitos <> [] entao
somar(digitos.descarte(2), soma + digitos[1])
senão
soma
fim
soma_par(digitos: Lista[Inteiro]) = somar(digitos.inverta.descarte(1), 0)
soma_impar(digitos: Lista[Inteiro]) = somar(digitos.inverta, 0)
div4(digitos: Lista[Inteiro]) = (digitos[2] * 10 + digitos[1]) mod 4 == 0
div5(digitos: Lista[Inteiro]) = digitos[1] mod 5 == 0
div100(digitos: Lista[Inteiro]) = digitos.pegue(2) == [0, 0]
div400(digitos: Lista[Inteiro]) = div100(digitos) e div4(digitos.descarte(2))
div11(digitos: Lista[Inteiro]) = (soma_par(digitos) - soma_impar(digitos)) mod 11 == 0
div3(digitos: Lista[Inteiro]) = digitos.injete(0)(_ + _) mod 3 == 0
var primeiro := verdadeiro
var entrada := leia_texto
enquanto não eof faça
digitos = entrada.inverta.lista.mapeie(_ - '0')
se primeiro entao
primeiro := falso
senão
escreva ""
fim
bissexto = div4(digitos) e não div100(digitos) ou div400(digitos)
bulukulu = bissexto e div5(digitos) e div11(digitos)
huluculu = div5(digitos) e div3(digitos)
se bissexto então
escreva "This is leap year."
fim
se huluculu então
escreva "This is huluculu festival year."
fim
se bulukulu então
escreva "This is bulukulu festival year."
fim
se não bissexto e não huluculu então
escreva "This is an ordinary year."
fim
entrada := leia_texto
fim
3089 - Presentes de Natal
var n := leia_inteiro
enquanto n > 0 faca
x = leia_inteiros(" ")
a = x.ordene
var menor, maior := a[n] + a[n+1]
para i de 1 ate n faca
b = a[i] + a[2 * n - i + 1]
se b < menor entao menor := b
senaose b > maior entao maior := b
fim
fim
escreva "{maior} {menor}"
n := leia_inteiro
fim
2466 - Sinuca
leia_inteiro
var linha := leia_inteiros(" ")
enquanto linha.tamanho > 1 faça
linha := para i de 2 até linha.tamanho gere
linha[i - 1] * linha[i]
fim
fim
escolha linha[1]
caso -1 => escreva "branca"
caso 1 => escreva "preta"
fim
2126 - Procurando Subsequências
var t := 0
var n1, n2 := leia_texto
enquanto nao eof faça
var cont, pos := 0
para i de 0 até n2.tamanho - n1.tamanho faça
var sub := verdadeiro
para j de 1 até n1.tamanho faça
sub := sub e n1[j] == n2[i+j]
fim
se sub então
cont := cont + 1
pos := i + 1
fim
fim
t := t + 1
escreva "Caso #{t}:"
se cont > 0 então
escreva "Qtd.Subsequencias: {cont}"
escreva "Pos: {pos}"
senão
escreva "Nao existe subsequencia"
fim
escreva ""
n1, n2 := leia_texto
fim
1059 - Números Pares
para i de 2 até 100 passo 2 faça
escreva i
fim
1132 - Múltiplos de 13
a, b = leia_inteiro
p = se a<b então 1 senão -1 fim
var soma := 0
para i de a até b passo p se i mod 13 <> 0 faça
soma := soma + i
fim
escreva soma
3043 - Festa Junina
flat(a: Lista[Lista[Lista[Inteiro]]]) = para v em a, y em v gere y fim
var n, t := leia_inteiro, 0
enquanto n > 0 faca
var valores := [para i de 1 ate n gere i fim]
para i de 1 ate n faca
nums = leia_inteiros(" ")
valores := flat(valores.mapeie(v =>
se v - nums == v ou v - [i] == v entao [v]
senao [v - [i], v - nums]
fim))
fim
t := t + 1
r = valores.mapeie(_.tamanho).ordene.ultimo
escreva "Teste {t}
|{r}
|"
n := leia_inteiro
fim
2356 - Bactéria I
var d := leia_texto
enquanto nao eof faca
s = leia_texto
var i := 0
enquanto i < d.tamanho - s.tamanho + 1 faca
se d.descarte(i).pegue(s.tamanho) == s entao
escreva "Resistente"
i := d.tamanho
senao
i := i + 1
fim
fim
se i < d.tamanho entao
escreva "Nao resistente"
fim
d := leia_texto
fim
2158 - Ajudando o Tio Cláudio
var c := 0
var entrada := leia_texto
enquanto nao eof faca
a = entrada.divida(" ").mapeie(i => BigInt(i))
fp, fh = a[1], a[2]
lig = (5 * fp + 6 * fh) div 2
ato = 2 + lig - fp - fh
c := c + 1
escreva "Molecula #{c}.:."
escreva "Possui {ato} atomos e {lig} ligacoes"
escreva ""
entrada := leia_texto
fim
1847 - Bem-vindos e Bem-vindas ao Inverno!
a = leia_inteiros(" ")
x = a[2] - a[1]
y = a[3] - a[2]
se y > x ou (x == y e x > 0) então
escreva ":)"
senão
escreva ":("
fim
2420 - Guerra por Território
n = leia_inteiro
var a := leia_inteiros(" ")
total = a.injete(0)(_ + _)
var metade := 0
enquanto metade < total div 2 faça
metade := metade + a.cabeça
a := a.cauda
fim
escreva n - a.tamanho
2691 - O Matemático
n = leia_inteiro
para i de 1 até n faça
entrada = leia_inteiros("x")
x, y = entrada[1], entrada[2]
para t de 5 ate 10 faca
se x == y entao
escreva "{x} x {t} = {x*t}"
senao
escreva "{x} x {t} = {x * t} && {y} x {t} = {y * t}"
fim
fim
fim
1800 - Onde Estão Minhas Chaves
q = leia_inteiros(" ")[1]
c = leia_inteiros(" ")
var visitas := Lista(1000, 1)
para a em c faça
visitas[a] := 0
fim
para i de 1 até q faça
a = leia_inteiro
escreva visitas[a]
visitas[a] := 0
fim
var a := leia_inteiros(" ")
enquanto a <> [0, 0] faça
escreva 2 * a[1] - a[2]
a := leia_inteiros(" ")
fim
1087 - Dama
var in := leia_inteiros(" ")
enquanto in[1] <> 0 faça
dx = (in[1] - in[3]).abs
dy = (in[2] - in[4]).abs
se dx == 0 e dy == 0 então
escreva 0
senãose dx == dy ou dx == 0 ou dy == 0 então
escreva 1
senão
escreva 2
fim
in := leia_inteiros(" ")
fim
1514 - Competição
transpor(mat: Lista[Lista[Inteiro]]): Lista[Lista[Inteiro]] =
se mat.cabeça == [] então []
senão mat.mapeie(_.cabeça) :: transpor(mat.mapeie(_.cauda))
fim
total_linhas(linha: Lista[Lista[Inteiro]]): Lista[Inteiro] =
linha.mapeie(linha => linha.injete(0)((soma, x) => soma + x))
var entrada := leia_inteiros(" ")
enquanto entrada <> [0, 0] faça
n, m = entrada[1], entrada[2]
matriz = para i de 1 até n gere leia_inteiros(" ") fim
linhas = total_linhas(matriz).ordene
colunas = total_linhas(transpor(matriz)).ordene
pontos = [linhas[1] > 0, linhas[n] < m, colunas[1] > 0, colunas[m] < n].selecione(x => x).tamanho
escreva pontos
entrada := leia_inteiros(" ")
fim
1247 - Guarda Costeira
var a := leia_inteiros(" ")
enquanto nao eof faca
d, vf, vg = a[1], a[2], a[3]
c = raiz(144 + d^2) / 12
se vg >= vf * c entao
escreva "S"
senao
escreva "N"
fim
a := leia_inteiros(" ")
fim
2552 - PãodeQuejoSweeper
var entrada := leia_texto
enquanto nao eof faca
a = entrada.divida(" ").mapeie(_.inteiro)
n, m = a[1], a[2]
tabuleiro = para i de 1 até n gere leia_inteiros(" ") fim
para i de 1 ate n faca
para j de 1 ate m faca
soma = se tabuleiro[i][j] == 1 entao 9 senão
(se i > 1 entao tabuleiro[i-1][j] senao 0 fim) +
(se j > 1 entao tabuleiro[i][j-1] senao 0 fim) +
(se i < n entao tabuleiro[i+1][j] senao 0 fim) +
(se j < m entao tabuleiro[i][j+1] senao 0 fim)
fim
imprima soma
fim
escreva ""
fim
entrada := leia_texto
fim
1890 - Emplacando os Tuk-tuks
t = leia_inteiro
para i de 1 até t faça
entrada = leia_inteiros(" ")
c, d = entrada[1], entrada[2]
placas = 26 ^ c * 10 ^ d
se placas > 1 então
escreva placas formato "%.0f"
senão
escreva 0
fim
fim
1609 - Contando Carneirinhos
t = leia_inteiro
para i de 1 até t faça
n = leia_inteiro
l = leia_inteiros(" ")
escreva l.ordene.divida_quando(_ <> _).tamanho
fim
2373 - Garçom
n = leia_inteiro
var total := 0
para i de 1 ate n faca
a = leia_inteiros(" ")
l, c = a[1], a[2]
se l > c entao total := total + c fim
fim
escreva total
1013 - O Maior
# Utilizando a formula pedida na questão...
maior(x, y:Inteiro): Inteiro
retorne (x+y+abs(x-y)) div 2
fim
numeros = leia_inteiros(3)
escreva "{maior(numeros[1], maior(numeros[2], numeros[3]))} eh o maior"
3084 - Relógio Antigo
var a := leia_inteiros(" ")
enquanto nao eof faca
hora = a[1] div 30
minuto = a[2] div 6
escreva "{hora formato "%02d"}:{minuto formato "%02d"}"
a := leia_inteiros(" ")
fim
1115 - Quadrante
var entrada := leia_inteiros(" ")
enquanto entrada[1] * entrada[2] <> 0 faça
x, y = entrada[1], entrada[2]
se x > 0 e y > 0 então
escreva "primeiro"
senãose x < 0 e y > 0 então
escreva "segundo"
senãose x < 0 então
escreva "terceiro"
senão
escreva "quarto"
fim
entrada := leia_inteiros(" ")
fim
2635 - Navegador Web
n = leia_inteiro
palavras = Lista(n, 0).mapeie(a => leia_texto)
q = leia_inteiro
para i de 1 ate q faca
s = leia_texto
t = s.tamanho
c = palavras.selecione(palavra => palavra.pegue(t) == s)
maior = c.injete(-1)((a, b) => se b.tamanho > a entao b.tamanho senao a fim)
se c.tamanho > 0 entao
escreva "{c.tamanho} {maior}"
senao
escreva -1
fim
fim
2929 - Menor da Pilha
n = leia_inteiro
var pilha:= [0].cauda
var tamanho := 0
para i de 1 ate n faca
entrada = leia_texto
valor = entrada.descarte(5).inteiro
escolha entrada[2]
caso 'U' se tamanho == 0 =>
pilha := valor :: pilha
tamanho := 1
caso 'U' =>
menor = se valor < pilha.cabeca entao valor senao pilha.cabeca fim
pilha := menor :: pilha
tamanho := tamanho + 1
caso 'I' se tamanho > 0 =>
escreva pilha.cabeca
caso 'O' se tamanho > 0 =>
pilha := pilha.cauda
tamanho := tamanho - 1
caso _ =>
escreva "EMPTY"
fim
fim
3312 - Imberbe Matemático
var z := BigInt(1)
fat = para i de 1 ate 100 gere z := z * i z fim
primos = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
primo = para i de 1 ate 100 gere primos.contem(i) fim
n = leia_inteiro
x = leia_inteiros(" ")
para a em x se primo[a] faca
escreva "{a}! = {fat[a]}"
fim
2520 - O Último Analógimôn
var entrada := leia_texto
enquanto nao eof faca
a = entrada.divida(" ").mapeie(_.inteiro)
n, m = a[1], a[2]
var x1, y1, x2, y2 := 0
para i de 1 ate n faca
linha = leia_inteiros(" ")
para j de 1 ate m faca
se linha[j] == 1 entao
x1, y1 := i, j
fim
se linha[j] == 2 entao
x2, y2 := i, j
fim
fim
fim
tempo = (x2 - x1).abs + (y2 - y1).abs
escreva tempo
entrada := leia_texto
fim
1963 - O Filme
entrada = leia_reais(" ")
a = entrada[1]
b = entrada[2]
c = (b / a - 1) * 100
escreva "{c formato "%.2f"}%"
1875 - Tribol
c = leia_inteiro
para i de 1 ate c faca
p = leia_inteiro
var r, g, b := 0
para k de 1 ate p faca
ms = leia_texto
escolha ms
caso "R G" => r := r + 2
caso "G B" => g := g + 2
caso "B R" => b := b + 2
caso "R B" => r := r + 1
caso "G R" => g := g + 1
caso _ => b := b + 1
fim
fim
se r == g e g == b entao escreva "trempate"
senaose r > g e r > b entao escreva "red"
senaose g > r e g > b entao escreva "green"
senaose b > g e b > r entao escreva "blue"
senao escreva "empate"
fim
fim
2852 - Troca de Mensagens
k = leia_texto
n = leia_inteiro
tam = k.tamanho
para i de 1 ate n faca
frase = leia_texto
var a := -1
var vogal := frase.tamanho == 0 ou "aeiou".contem(frase[1])
para i de 1 ate frase.tamanho faca
letra = frase[i]
se i > 1 e frase[i-1] == ' ' entao
vogal := "aeiou".contem(letra)
fim
se vogal ou letra == ' ' entao
imprima letra
senao
a := (a + 1) mod tam
imprima ((letra + k[a+1] - 2 * 'a') mod 26 + 'a').caractere
fim
fim
escreva ""
fim
2388 - Tacógrafo
n = leia_inteiro
var soma := 0
para i de 1 ate n faca
linha = leia_inteiros(" ")
t, v = linha[1], linha[2]
soma := soma + t * v
fim
escreva soma
2533 - Estágio
var m := leia_inteiro
enquanto m > 0 faca
var produto, cargas := 0
para i de 1 ate m faca
a = leia_inteiros(" ")
n, c = a[1], a[2]
produto := produto + n * c
cargas := cargas + c
fim
ira = produto / (100 * cargas)
escreva ira formato "%.4f"
m := leia_inteiro
fim
3258 - Fervendo Vegetais
t = leia_reais(" ")[1]
var ws := leia_inteiros(" ").ordene.mapeie(x => (x, 1, x.real))
n = ws.tamanho
var cortes := 0
enquanto ws[1].terceiro / ws[n].terceiro < t faça
wsn = ws[n]
c = wsn.segundo + 1
p = wsn.primeiro / c
ws[n] := (wsn.primeiro, c, p)
ws := ws.ordene(x => x.terceiro)
cortes := cortes + 1
fim
escreva cortes
1151 - Fibonacci Fácil
var fib := [1, 0]
enquanto fib.tamanho < 50 faça
fib := (fib[1] + fib[2]) :: fib
fim
n = leia_inteiro
escreva fib.inverta.pegue(n).junte(" ")
1051 - Imposto de Renda
salario = leia_real
se salario <= 2000 então
escreva "Isento"
senãose salario <= 3000 então
resto = salario - 2000
resultado = resto * 0.08
escreva "R$ {resultado formato "%.2f"}"
senãose salario < 4500 então
resto = salario - 3000
resultado = (resto * 0.18) + (1000 * 0.08)
escreva "R$ {resultado formato "%.2f"}"
senão
resto = salario - 4500
resultado = (resto * 0.28) + (1500 * 0.18) + (1000 * 0.08)
escreva "R$ {resultado formato "%.2f"}"
fim
2456 - Cartas
a = leia_inteiros(" ")
b = a.ordene
c = b.inverta
se a == b entao
escreva "C"
senaose a == c entao
escreva "D"
senao
escreva "N"
fim
2950 - As Duas Torres
a = leia_inteiros(" ")
n, x, y = a[1], a[2], a[3]
icm = n / (x + y)
escreva icm formato "%.2f"
2782 - Escadinha
n = leia_inteiro
nums = leia_inteiros(" ")
se n > 1 entao
a = nums.zip(nums.cauda).mapeie(n => n.segundo - n.primeiro)
c = a.divida_quando(_ <> _)
escreva c.tamanho
senao
escreva 1
fim
1040 - Média 3
notas = leia_reais(" ")
pesos = [2, 3, 4, 1]
var media := 0.0
para i de 1 até 4 faça
media := media + notas[i] * pesos[i]
fim
media := media.inteiro / 10
escreva "Media: {media formato "%.1f"}"
se media >= 7.0 então
escreva "Aluno aprovado."
senãose media < 5.0 então
escreva "Aluno reprovado."
senão
escreva "Aluno em exame."
exame = leia_real
escreva "Nota do exame: {exame formato "%.1f"}"
final = (media + exame) / 2
se final >= 5.0 então
escreva "Aluno aprovado."
senão
escreva "Aluno reprovado"
fim
escreva "Media final: {final formato "%.1f"}"
fim
1632 - Variações
t = leia_inteiro
para i de 1 até t faça
s = leia_texto.minusculo
m = s.lista
.mapeie(c => se "aeios".contém(c) então 3 senão 2 fim)
.injete(1)(_ * _)
escreva m
fim
2469 - Notas
qnt_alunos = leia_inteiro
notas = leia_inteiros(" ")
notas_ord = notas.ordene
var i = 1
var maior_repetidos = 1
var maior_nota = 0
enquanto i <= qnt_alunos faça
repetidos = notas_ord.selecione(n => n == notas_ord[i])
i := i + repetidos.tamanho - 1
se repetidos.tamanho >= maior_repetidos então
maior_repetidos := repetidos.tamanho
maior_nota := notas_ord[i]
fim
i := i + 1
fim
escreva maior_nota
# Solução mais simplificada
# qnt_alunos = leia_inteiro
# notas = leia_inteiros(" ")
# escreva notas.ordene(- _).divida_quando((a, b) => a <> b).ordene(- _.tamanho)[1][1]
3163 - Controlador de Vôo
pousos(avioes: Lista[Lista[Texto]]): Lista[Texto]
se avioes == [[], [], [], []] então
[]
senão
avioes.mapeie(_.pegue(1))
.selecione(_ <> [])
.injete([""].cauda)(_ + _)
+
pousos(avioes.mapeie(_.descarte(1)))
fim
fim
var avioes: Lista[Lista[Texto]] := [[], [], [], []]
var a := leia_texto
var sentido := 1
enquanto a <> "0" faça
se a[1] == '-' então
sentido := -a.inteiro
senão
avioes[sentido] := a :: avioes[sentido]
fim
a := leia_texto
fim
avioes := [avioes[1], avioes[3], avioes[2], avioes[4]].mapeie(_.inverta)
escreva pousos(avioes).junte(" ")
2650 - Construindo Muralhas
a = leia_inteiros(" ")
n, w = a[1], a[2]
para i de 1 ate n faca
s = leia_textos(" ")
se s[-1].inteiro > w entao
escreva s.pegue(s.tamanho - 1).junte(" ")
fim
fim
2451 - PacMan
n = leia_inteiro
linhas =
para i de 1 ate n gere
a = leia_texto.selecione(_ <> '.')
se i mod 2 == 1 entao a senão a.inverta fim
fim
comidas = linhas.junte("").divida("A").ordene(_.tamanho).inverta
escreva comidas[1].tamanho
3473 - Alerte o próximo!
a = leia_inteiro
escreva a+1
2880 - Enigma
mensagem, crip = leia_texto
letras = Lista(26, Lista(0,0)).mutável
para i de 1 até crip.tamanho faça
letras[crip[i] - 64] := (i-1) :: letras[crip[i] - 64]
fim
posicoes = Lista(mensagem.tamanho, 1).mutável
para i de 1 até mensagem.tamanho,
j em letras[mensagem[i] - 64] se i > j faça
posicoes[i - j] := 0
fim
tam = mensagem.tamanho - crip.tamanho + 1
escreva posicoes.pegue(tam).injete(0)(_ + _)
1136 - Bingo!
var a := leia_inteiros(" ")
enquanto a[1] > 0 faca
n, b = a[1], a[2]
var p := Lista(n, 0) #.mutavel
var cont := 0
nums = leia_inteiros(" ").ordene
var i, j := 1, nums.tamanho
enquanto cont < n e i < nums.tamanho faca
x = nums[j] - nums[i]
se p[x] == 0 entao
p[x] := 1
cont := cont + 1
fim
j := j - 1
se j == i entao
i := i + 1
j := nums.tamanho
fim
fim
se cont == n entao
escreva "Y"
senao
escreva "N"
fim
a := leia_inteiros(" ")
fim
1858 - A Resposta de Theon
n = leia_inteiro
numeros = leia_inteiros(" ")
var menor := 1
para i de 2 até n faça
se numeros[i] < numeros[menor] então
menor := i
fim
fim
escreva menor
1864 - Nossos Dias Nunca Voltarão
s = "LIFE IS NOT A PROBLEM TO BE SOLVED"
n = leia_inteiro
escreva s.pegue(n)
1828 - Bazinga!
t = leia_inteiro
nomes = ["tesoura", "papel", "pedra", "lagarto", "Spock"]
para i de 1 até t faça
s = leia_textos(" ")
a = nomes.posição(s[1])
b = nomes.posição(s[2])
c = (b - a + 5) mod 5
resultado =
se c == 0 então
"De novo"
senãose c mod 2 == 1 então
"Bazinga"
senão
"Raj trapaceou"
fim
escreva "Caso #{i}: {resultado}!"
fim
1383 - Sudoku
f(s: Lista[Lista[Inteiro]], x1, y1, x2, y2: Inteiro)
linha = (para i de x1 até x2, j de y1 até y2 gere s[i][j] fim).ordene
ordenada = para i de 1 até 9 gere i == linha[i] fim
retorne ordenada.injete(verdadeiro)((a, b) => a e b)
fim
n = leia_inteiro
para i de 1 até n faça
s = para j de 1 até 9 gere leia_inteiros(" ") fim
linhas = para j de 1 até 9 gere f(s, j, 1, j, 9) fim +
para j de 1 até 9 gere f(s, 1, j, 9, j) fim +
para j em [1, 4, 7], k em [1, 4, 7] gere f(s, j, k, j+2, k+2) fim
ok = linhas.injete(verdadeiro)((a, b) => a e b)
escreva "Instancia {i}"
escreva se ok então "SIM" senão "NAO" fim
escreva ""
fim
1020 - Idade em Dias
a = leia_inteiro
b = a div 365
c = (a mod 365) mod 30
d = (a mod 365) div 30
escreva "{b} ano(s)"
escreva "{d} mes(es)"
escreva "{c} dia(s)"
3357 - Rico do Mate
entrada = leia_reais(" ")
n = entrada[1].inteiro
l, q = (entrada[2] * 10).arredonde, (entrada[3] * 10).arredonde
participantes = leia_textos(" ")
r = l mod (n * q)
se r mod q == 0 entao
agua = q / 10
rei = (l - 1) mod (n * q) div q + 1
escreva "{participantes[rei]} {agua formato "%.1f"}"
senão
agua = r mod q / 10
rei = r div q + 1
escreva "{participantes[rei]} {agua formato "%.1f"}"
fim
2540 - Impeachment do Líder
var n := leia_inteiro
enquanto n > 0 faca
v = leia_texto
favoraveis = v.selecione(_ == '1').tamanho
se favoraveis * 3 >= n * 2 entao
escreva "impeachment"
senao
escreva "acusacao arquivada"
fim
n := leia_inteiro
fim
1960 - Numeração Romana para Números de Página
n = leia_texto
a = ("00" + n).lista.inverta.pegue(3).mapeie(_ - '0')
r = "IVXLCDM"
var s := ""
para i de 3 ate 1 passo -1 faca
d = r.descarte(i * 2 - 2).pegue(3)
s := s + (escolha a[i]
caso 9 => "{d[1]}{d[3]}"
caso x se x > 4 => "{d[2]}" + "{d[1]}" * (x - 5)
caso 4 => "{d[1]}{d[2]}"
caso x se x > 0 => "{d[1]}" * x
caso _ => ""
fim)
fim
escreva s
3300 - Números Má Sorte Recarregados
a = leia_texto
b = a.lista.zip(a.cauda).selecione(_.primeiro == '1').selecione(_.segundo == '3').tamanho
se b > 0 entao
escreva "{a} es de Mala Suerte"
senao
escreva "{a} NO es de Mala Suerte"
fim
3093 - Truco da Galera 1.0
n = leia_inteiro
para i de 1 ate n faca
s = leia_texto
t = s.tamanho - 4
se (s - "QJKA").tamanho == t entao
escreva "Aaah muleke"
senao
escreva "Ooo raca viu"
fim
fim
1581 - Conversa Internacional
n = leia_inteiro
para i de 1 ate n faca
k = leia_inteiro
s = leia_textos(k)
primeiro = s.cabeca
iguais = s.cauda.injete(verdadeiro)((a,b) => a e b == primeiro)
se iguais entao
escreva s.cabeca
senão
escreva "ingles"
fim
fim
2777 - Subsets do Dabriel
tipo Mat = Lista[Lista[BigInt]]
m = 1000000007
matrixMult(a, b: Mat): Mat
var result := Lista(a.tamanho, Lista(a[1].tamanho, BigInt(0)))
para i de 1 até a.tamanho, j de 1 até b.tamanho, k de 1 até b.tamanho faça
result[i][j] := (result[i][j] + a[i][k] * b[k][j]) mod m
fim
retorne result
fim
matrixPow(a: Mat, n: BigInt): Mat =
se n == 1 então
a
senão
b = matrixPow(a, n div 2)
c = matrixMult(b, b)
se n mod 2 == 0 então c senão matrixMult(a, c) fim
fim
dabriel(n: BigInt): BigInt
x0: Mat = [[1, 2, 2]]
a: Mat = [[0, 1, 0], [0, 0, 1], [1, 1, 0]]
xn: Mat = matrixMult(x0, matrixPow(a, n - 1))
retorne xn[1][1]
fim
var n := leia_texto
enquanto não eof faça
se n == "0" então
escreva 1
senão
escreva dabriel(BigInt(n))
fim
n := leia_texto
fim
3152 - Samuel, O Cafeicultor
var areas := Lista.mutável(2, 0.0)
var terrenos := Cubo.mutável(2, 5, 2, 0)
para i de 1 até 2 faça
para j de 1 até 4 faça
ponto = leia_inteiros(2)
terrenos[i][j][1] := ponto[1]
terrenos[i][j][2] := ponto[2]
fim
terrenos[i][5][1] := terrenos[i][1][1]
terrenos[i][5][2] := terrenos[i][1][2]
var somad, somae := 0, 0
para j de 1 até 4 faça
somad := somad + terrenos[i][j][1] * terrenos[i][j+1][2]
somae := somae + terrenos[i][j][2] * terrenos[i][j+1][1]
fim
areas[i] := abs(somad - somae) / 2
fim
se areas[2] >= areas[1] então
escreva "terreno B"
senão
escreva "terreno A"
fim
1183 - Acima da Diagonal Principal
o = leia_texto
nums = leia_reais(144)
var soma := 0.0
para i de 0 até 11, j de i + 2 até 12 faça
soma := soma + nums[i * 12 + j]
fim
se o == "S" então
escreva soma formato "%.1f"
senão
escreva soma / 66 formato "%.1f"
fim
1169 - Trigo no Tabuleiro
n = leia_inteiro
para i de 1 ate n faca
x = leia_inteiro
var trigo := BigInt(1)
para j de 1 ate x faca
trigo := trigo * 2
fim
escreva "{trigo div 12000} kg"
fim
2058 - Triângulos e Polígonos Regulares
n = leia_inteiro
escreva n - 2
2437 - Distância de Manhattan
entrada = leia_inteiros(" ")
xm = entrada[1]
ym = entrada[2]
xr = entrada[3]
yr = entrada[4]
a = abs(xm - xr) + abs(ym - yr)
escreva a
3068 - Meteoros
var linha := leia_inteiros(" ")
var t := 0
enquanto linha <> [0, 0, 0, 0] faca
t := t + 1
x1, y1, x2, y2 = linha[1], linha[2], linha[3], linha[4]
n = leia_inteiro
var cont := 0
para i de 1 ate n faca
a = leia_inteiros(" ")
x, y = a[1], a[2]
se x1 <= x e x <= x2 e y1 >= y e y >= y2 entao
cont := cont + 1
fim
fim
escreva "Teste {t}"
escreva cont
linha := leia_inteiros(" ")
fim
2833 - Campeonato
confronto(a, b, n: Inteiro) =
((a - 1) mod n - (n - 1) / 2) * ((b - 1) mod n - (n - 1) / 2) < 0
jogadores = leia_inteiros(" ")
kung = jogadores.posicao(1)
lu = jogadores.posicao(9)
se confronto(kung, lu, 16) entao
escreva "final"
senaose confronto(kung, lu, 8) entao
escreva "semifinal"
senaose confronto(kung, lu, 4) entao
escreva "quartas"
senão
escreva "oitavas"
fim
2861 - A Saída
n = leia_inteiro
leia_textos(n)
para i de 1 até n faça
escreva "gzuz"
fim
2483 - Feliz Nataaal!
i = leia_inteiro
escreva "Feliz nat{"a"*i}l!"
1072 - Intervalo 2
n = leia_inteiro
numeros = leia_inteiros(n)
in = numeros.selecione(n => n>= 10 e n <= 20).tamanho
escreva "{in} in"
escreva "{n - in } out"
3036 - Cor da Camisa
v = leia_inteiro
c = 300000000
λ = (700.0 * (c - v) / raiz( 1.0 * c * c - 1.0 * v * v)).arredonde
cor = se λ < 400 ou λ >= 750 então "invisivel"
senãose λ < 425 então "violeta"
senãose λ < 445 então "anil"
senãose λ < 500 então "azul"
senãose λ < 575 então "verde"
senãose λ < 585 então "amarelo"
senãose λ < 620 então "laranja"
senãose λ < 750 então "vermelho"
fim
escreva cor
2530 - Cola
cola(n, m: Inteiro, juan, ricardinho: Lista[Inteiro]): Lógico =
se m == 0 então
verdadeiro
senãose n == 0 então
falso
senãose juan[1] == ricardinho[1] então
cola(n-1, m-1, juan.cauda, ricardinho.cauda)
senão
cola(n-1, m, juan.cauda, ricardinho)
fim
var nm := leia_texto
enquanto nao eof faça
n = nm.divida(" ")[1].inteiro
m = nm.divida(" ")[2].inteiro
juan, ricardinho = leia_inteiros(" ")
c = cola(n, m, juan, ricardinho)
escreva (se c então "sim" senão "nao" fim)
nm := leia_texto
fim
2523 - A Mensagem de Will
loop(): Nada
s = leia_texto
se nao eof entao
n = leia_inteiro
nums = leia_inteiros(" ")
escreva nums.mapeie(a => s[a]).junte("")
loop()
fim
fim
loop
1796 - Economia Brasileira
q = leia_inteiro
v = leia_inteiros(" ")
satisfeitos = v.injete(0)(_ + _).tamanho
se satisfeitos > q div 2 entao
escreva "Y"
senao
escreva "N"
fim
2424 - Tira-teima
a = leia_inteiros(" ")
x, y = a[1], a[2]
se x >= 0 e x <= 432 e y >= 0 e y <= 468 entao
escreva "dentro"
senão
escreva "fora"
fim
3157 - Viva a Ciência!
escreva "Nao se refuta ciencia com opiniao"
2137 - A Biblioteca do Senhor Severino
var n := leia_inteiro
enquanto n > 0 faca
s = leia_textos(n)
escreva s.ordene.junte("\n")
n := leia_inteiro
fim
2242 - Huaauhahhuahau
a = leia_texto
b = a.selecione(c => "aeiou".contém(c))
se b == b.inverta então
escreva "S"
senão
escreva "N"
fim
2286 - Par ou Ímpar
var n := leia_inteiro
var t := 0
enquanto n > 0 faça
nomes = leia_textos(2)
t := t + 1
escreva "Teste {t}"
para i de 1 até n faça
soma = leia_inteiros(" ").injete(0)(_ + _)
se soma mod 2 == 0 então
escreva nomes[1]
senão
escreva nomes[2]
fim
fim
escreva ""
n := leia_inteiro
fim
2750 - Saída 4
escreva "---------------------------------------"
escreva "| decimal | octal | Hexadecimal |"
escreva "---------------------------------------"
escreva "| 0 | 0 | 0 |"
escreva "| 1 | 1 | 1 |"
escreva "| 2 | 2 | 2 |"
escreva "| 3 | 3 | 3 |"
escreva "| 4 | 4 | 4 |"
escreva "| 5 | 5 | 5 |"
escreva "| 6 | 6 | 6 |"
escreva "| 7 | 7 | 7 |"
escreva "| 8 | 10 | 8 |"
escreva "| 9 | 11 | 9 |"
escreva "| 10 | 12 | A |"
escreva "| 11 | 13 | B |"
escreva "| 12 | 14 | C |"
escreva "| 13 | 15 | D |"
escreva "| 14 | 16 | E |"
escreva "| 15 | 17 | F |"
escreva "---------------------------------------"
1943 - Top N
k = leia_inteiro
top = se k == 1 então 1
senãose k <= 3 então 3
senãose k <= 5 então 5
senãose k <= 10 então 10
senãose k <= 25 então 25
senãose k <= 50 então 50
senão 100
fim
escreva "Top {top}"
1104 - Troca de Cartas
distintas(cartas: Lista[Inteiro]) =
cartas.divida_quando(_ <> _).mapeie(_.cabeca)
var entrada := leia_texto
enquanto entrada <> "0 0" faca
alice, beatriz = distintas(leia_inteiros(" "))
a, b = alice.tamanho, beatriz.tamanho
iguais = a - (alice - beatriz).tamanho
trocas = se a < b entao a - iguais senao b - iguais fim
escreva trocas
entrada := leia_texto
fim
2154 - Derivada de Polinômios
expoente(n: Inteiro) = se n > 1 entao n.texto senao "" fim
var t := leia_inteiro
enquanto t > 0 faça
polinomio = leia_textos(" +").selecione(_ <> "").mapeie(termo =>
termo.divida("x").mapeie(_.inteiro)
)
derivada = polinomio.mapeie(termo => (termo[1] * termo[2], termo[2] - 1))
resposta = derivada.mapeie(termo => "{termo.primeiro}x{expoente(termo.segundo)}").junte(" + ")
escreva resposta
t := leia_inteiro
fim
1521 - O Culpado
var flag := verdadeiro
enquanto flag faça
n = leia_inteiro
se n == 0 então
flag := falso
senão
alunos = leia_inteiros(n)
var i := leia_inteiro
enquanto alunos[i] <> i faça
i := alunos[i]
fim
escreva i
fim
fim
2718 - Luzes de Natal
n = leia_inteiro
para i de 1 até n faça
a = leia_texto
b = BigInt(a).toLong.toBinaryString
x = b.divida("0").injete("")((r,s) => se r > s então r senao s fim).tamanho
escreva x
fim
2982 - A Greve para ou Continua?
n = leia_inteiro
var v := 0
para i de 1 ate n faca
a = leia_textos(" ")
se a[1] == "G" entao
v := v + a[2].inteiro
senao
v := v - a[2].inteiro
fim
fim
se v > 0 entao
escreva "NAO VAI TER CORTE, VAI TER LUTA!"
senao
escreva "A greve vai parar."
fim
1564 - Vai Ter Copa?
var n := leia_inteiro
enquanto n >= 0 faça
r = se n == 0 então "copa" senão "duas" fim
escreva "vai ter {r}!"
s = leia_texto
n := se eof então -1 senão s.inteiro fim
fim
2762 - Entrada e Saída 6
n = leia_inteiros(".")
n1, n2 = n[1], n[2]
escreva "{n2}.{n1}"
2473 - Loteria
aposta, sorteio = leia_inteiros(" ")
acertos = para i em aposta,
j em sorteio se i == j gere i fim
resposta = ["azar", "azar", "azar", "terno", "quadra", "quina", "sena"]
escreva resposta[acertos.tamanho + 1]
1306 - Numerando Estradas
var casos := 0
var a := leia_inteiros(" ")
enquanto a <> [0, 0] faça
casos := casos + 1
sufixos = (a[1] - 1) div a[2]
se sufixos <= 26 então
escreva "Case {casos}: {sufixos}"
senão
escreva "Case {casos}: impossible"
fim
a := leia_inteiros(" ")
fim
1074 - Par ou Ímpar
n = leia_inteiro
para i de 1 até n faça
x = leia_inteiro
se x == 0 então
escreva "NULL"
senão
r = se x mod 2 == 0 então "EVEN" senão "ODD" fim
s = se x > 0 então "POSITIVE" senão "NEGATIVE" fim
escreva "{r} {s}"
fim
fim
2922 - Salas De Aula
var b := leia_inteiros(" ").ordene
enquanto nao eof faca
x, y = b[1], b[2]
se x <> y entao
escreva y - x - 1
senao
escreva 0
fim
b := leia_inteiros(" ").ordene
fim
3301 - Sobrinho do Meio
a = leia_inteiros(" ")
h, z, l = a[1], a[2], a[3]
se h < z e z < l ou l < z e z < h entao
escreva "zezinho"
senaose z < h e h < l ou l < h e h < z entao
escreva "huguinho"
senao
escreva "luisinho"
fim
2204 - Pare A Bomba!
gcd(a, b: Texto) = se a == b entao a senao "1" fim
t = leia_inteiro
para i de 1 ate t faça
ab = leia_textos(" ")
escreva gcd(ab[1], ab[2])
fim
3303 - Palavrão
palavra = leia_texto
se palavra.tamanho >= 10 entao
escreva "palavrao"
senao
escreva "palavrinha"
fim
1199 - Conversão Simples de Base
var input = leia_texto
enquanto input <> "-1" faça
se input.contém('x') então
escreva "{Integer.parseInt(input.descarte(2), 16)}"
senão
escreva "0x{Integer.toHexString(input.inteiro).maiúsculo}"
fim
input := leia_texto
fim
2164 - Fibonacci Rápido
n = leia_inteiro
r5 = 5 ^ 0.5
fib = (((1 + r5) / 2) ^ n - ((1 - r5) / 2) ^ n) / r5
escreva "{fib formato "%.1f"}"
1153 - Fatorial Simples
n = leia_inteiro
fat = (para i de 1 até n gere i fim).injete(1)(_ * _)
escreva fat
1708 - Volta
a = leia_inteiros(" ")
x, y = a[1], a[2]
voltas = (x / (y - x)).teto.inteiro + 1
escreva voltas
2232 - Triângulo de Pascal
t = leia_inteiro
para i de 1 ate t faca
n = leia_inteiro
escreva (2^n - 1) formato "%.0f"
fim
1067 - Números Ímpares
n = leia_inteiro
para i de 1 até n passo 2 faça
escreva i
fim
2496 - A Única Chance
n = leia_inteiro
para i de 1 ate n faca
m = leia_inteiro
s = leia_texto
trocas = para j de 1 ate m se s[j] - 'A' <> j - 1 gere 1 fim.tamanho
se trocas < 3 entao
escreva "There are the chance."
senao
escreva "There aren't the chance."
fim
fim
1768 - Árvore de Natal
var n := leia_inteiro
enquanto n <> 0 faça
meio = (n / 2).inteiro + 1
para i de 1 até meio faça
para j de i até (n / 2).inteiro faça
imprima " "
fim
numeroImpar = 2 * i - 1
para j de 1 até numeroImpar faça
imprima "*"
fim
escreva ""
fim
var count := 1
enquanto count <= 2 faça
para j de count até (n / 2).inteiro faça
imprima " "
fim
numeroImpar = 2 * count - 1
para j de 1 até numeroImpar faça
imprima "*"
fim
escreva ""
count := count + 1
fim
n := leia_inteiro
escreva ""
fim
1868 - Espiral Quadrada
var n := leia_inteiro
var g := Lista(n, Lista(n, "O"))
var x,y := 0, 0
dx = [0,-1,0,1]
dy = [1,0,-1,0]
mostrar_solução()
para i de 1 até g.tamanho faça
para j de 1 até g.tamanho faça
imprima g[i][j]
fim
escreva ""
fim
escreva "@"
fim
mover(iter : Inteiro, dir : Inteiro)
var flag := verdadeiro
tm = g.tamanho
para j de 1 até iter faça
nx = x + dx[dir]
ny = y + dy[dir]
se ((nx >= 1) e (nx <= tm) e (ny >= 1) e (ny <= tm)) então
g[x][y] := "O"
x := nx
y := ny
g[x][y] := "X"
mostrar_solução()
senão
flag := falso
fim
fim
retorne flag
fim
solução(tm: Inteiro)
g := Lista(tm, Lista(tm, "O"))
x := (n / 2).inteiro + 1
y := (n / 2).inteiro + 1
var iter := 0
g[x][y] := "X"
mostrar_solução()
var condicao := verdadeiro
enquanto condicao faça
iter := iter + 1
se condicao e não(mover(iter, 1)) então
condicao := falso
fim
se condicao e não(mover(iter, 2)) então
condicao := falso
fim
iter := iter + 1
se condicao e não(mover(iter, 3)) então
condicao := falso
fim
se condicao e não(mover(iter, 4)) então
condicao := falso
fim
fim
fim
enquanto n <> 0 faça
solução(n)
n := leia_inteiro
fim
2382 - Sedex Marciano
d = leia_inteiros(4)
lados = d.pegue(3).ordene(_ > _)
l1, l2 = lados[1], lados[2]
r = d[4]
se l1 * l1 + l2 * l2 <= 4 * r * r entao
escreva "S"
senao
escreva "N"
fim
2061 - As Abas de Péricles
a = leia_inteiros(" ")
n, m = a[1], a[2]
s = leia_textos(m)
x = n + s.selecione(_ == "fechou").tamanho - s.selecione(_ == "clicou").tamanho
escreva x
entrada = leia_inteiros(" ")
h1 = entrada[1]
m1 = entrada[2]
h2 = entrada[3]
m2 = entrada[4]
t1 = h1 * 60 + m1
t2 = h2 * 60 + m2
t = se t2 >t1 então t2 - t1 senão t2 - t1 + 24 * 60 fim
h = t div 60
m = t mod 60
escreva "O JOGO DUROU {h} HORA(S) E {m} MINUTO(S)"
3037 - Jogando Dardos Por Distância
n = leia_inteiro
pontos() = para j de 1 ate 3 gere
leia_inteiros(" ").injete(1)(_ * _)
fim.injete(0)(_ + _)
para i de 1 ate n faca
joao, maria = pontos
escreva se joao > maria entao "JOAO" senao "MARIA" fim
fim
1163 - Angry Ducks
PI = 3.14159
G = 9.80665
var input := leia_texto
enquanto input <> nulo e input <> "" faca
var h = input.real
pares = leia_reais(" ")
p1, p2 = pares[1], pares[2]
n = leia_inteiro
para i de 1 até n faça
x = leia_reais(" ")
a, v = x[1], x[2]
alfa = a * PI / 180
vox = v * cos(alfa)
voy = v * sen(alfa)
ts = voy / G
H = (voy*voy) / (2 * G) + h
vfy = raiz(2 * G * H)
td = vfy / G
tt = ts + td
D = vox * tt
var d = D.arredonde(5).texto
tamanho_fracao = d.descarte_enquanto(letra => letra <> '.').tamanho
se tamanho_fracao < 6 então
para i de 1 até (6 - tamanho_fracao) faça
d := d + '0'
fim
fim
se D > p1 e D < p2 então
escreva "{d} -> DUCK"
senão
escreva "{d} -> NUCK"
fim
fim
input := leia_texto
fim
1091 - Divisão da Nlogônia
var k := leia_inteiro
enquanto k > 0 faca
a = leia_inteiros(" ")
n, m = a[1], a[2]
para i de 1 ate k faca
b = leia_inteiros(" ")
dx, dy = b[1] - n, b[2] - m
se dx == 0 ou dy == 0 entao escreva "divisa"
senaose dx > 0 e dy > 0 entao escreva "NE"
senaose dx > 0 entao escreva "SE"
senaose dy > 0 entao escreva "NO"
senao escreva "SO"
fim
fim
k := leia_inteiro
fim
1255 - Frequência de Letras
n = leia_inteiro
para i de 1 até n faça
s = leia_texto.minúsculo.selecione(c => c >= 'a' e c <= 'z')
var letras := Lista(26, 0)
var mais := 0
para c em s faca
letras[c - 96] := letras[c - 96] + 1
se letras[c - 96] > mais entao mais := letras[c - 96] fim
fim
saida = para c de 'a' ate 'z' se letras[c - 96] == mais gere c fim
escreva saida.junte("")
fim
2441 - Janela
min(x, y: Inteiro) = se x < y então x senão y fim
a = leia_inteiros(" ").ordene
r = 400 - min(200, a[2]-a[1]) - min(200, a[3]-a[2])
escreva r*100
2409 - Colchão
entrada1, entrada2 = leia_inteiros(" ").ordene
a = entrada1[1]
b = entrada1[2]
c = entrada1[3]
h = entrada2[1]
l = entrada2[2]
se l > b e h > a então
escreva "S"
senão
escreva "N"
fim
1387 - Og
var entrada := leia_inteiros(" ")
enquanto entrada[1] > 0 faça
l, r = entrada[1], entrada[2]
escreva l + r
entrada := leia_inteiros(" ")
fim
2601 - Tustin e Seu Dado Antigo
n = leia_inteiro
para i de 1 até n faça
valores = leia_inteiros(6)
somas = [valores[1] + valores[6], valores[2] + valores[4], valores[3] + valores[5]]
possibilidades = escolha somas.selecione(_ == 0).tamanho
caso 0 => 1 # 1
caso 1 => 2 # 2 * 1
caso 2 => 8 # 4 * 2 * 1
caso 3 => 48 # 6 * 4 * 2 * 1
fim
escreva possibilidades
fim
2428 - Capital
x = leia_inteiros(" ").ordene
se x[1] * x[4] == x[2] * x[3] então
escreva "S"
senão
escreva "N"
fim
1021 - Notas e Moedas
var valor := leia_real
escreva("NOTAS:")
escreva("{(valor div 100).piso formato "%.0f"} nota(s) de RS 100.00")
var novo_valor := valor mod 100
escreva ("{(novo_valor div 50).piso formato "%.0f"} nota(s) de RS 50.00")
valor := novo_valor mod 50
escreva("{(valor div 20).piso formato "%.0f"} nota(s) de RS 20.00")
novo_valor := valor mod 20
escreva("{(novo_valor div 10).piso formato "%.0f"} nota(s) de RS 10.00")
valor := novo_valor mod 10
escreva("{(valor div 5).piso formato "%.0f"} nota(s) de RS 5.00")
novo_valor := valor mod 5
escreva("{(valor div 2).piso formato "%.0f"} nota(s) de RS 2.00")
valor := novo_valor mod 2
escreva("MOEDAS:")
escreva("{(valor div 1).piso formato "%.0f"} moeda(s) de RS 1.00")
novo_valor := valor mod 1
escreva("{(novo_valor * 2).piso formato "%.0f"} moeda(s) de RS 0.50")
valor := novo_valor mod 0.50
escreva("{(valor*4).piso formato "%.0f"} moeda(s) de RS 0.25")
novo_valor := valor mod 0.25
escreva("{(novo_valor * 10).piso formato "%.0f"} moeda(s) de RS 0.10")
valor := novo_valor mod 0.10
escreva("{(valor*20).piso formato "%.0f"} moeda(s) de RS 0.05")
novo_valor := valor mod 0.05
escreva("{(valor*100).piso formato "%.0f"} moeda(s) de RS 0.01")
1042 - Sort Simples
n = leia_inteiros(" ")
escreva n.ordene.junte("\n")
escreva ""
escreva n.junte("\n")
2596 - Xenlonguinho
c = leia_inteiro
var l := Lista(1000, 1)
para i de 2 ate 1000,
j de i ate 1000 passo i faca
l[j] := l[j] + 1
fim
numeros = l.lista.mapeie(a => a mod 2)
para i de 1 ate c faca
n = leia_inteiro
escreva numeros.pegue(n).injete(n)(_ - _)
fim
1580 - Quid Est Veritas? Est Vir Qui Adest!
fat(n: Inteiro) = para i de 2 ate n gere i fim.injete(BigInt(1))(_ * _)
var s:= leia_texto
enquanto s <> "" faça
f = fat(s.tamanho)
r = s.ordene.divida_quando(_ <> _).mapeie(_.tamanho).mapeie(fat)
x = r.injete(BigInt(1))(_ * _)
escreva f div x mod BigInt(1000000007)
s := leia_texto
fim
1174 - Seleçao em Vetor I
a = leia_reais(100)
para i de 1 até 100 se a[i] <= 10.0 faça
escreva "A[{i-1}] = {a[i] formato "%.1f"}"
fim
1217 - Getline Two - Frutas
dias = leia_inteiro
var kg_total := 0
var preco_total := 0.0
para dia de 1 até dias faça
preco = leia_real
kg = leia_textos(" ").tamanho
preco_total := preco_total + preco
kg_total := kg_total + kg
escreva "day {dia}: {kg} kg"
fim
escreva "{kg_total / dias formato "%.2f"} kg by day"
escreva "R$ {preco_total / dias formato "%.2f"} by day"
2147 - Galopeira
c = leia_inteiro
para i de 1 ate c faca
t = leia_texto
escreva t.tamanho / 100 formato "%.2f"
fim
3154 - A Grande Festa
entrada = leia_inteiros(" ")
d = entrada[1]
p = entrada[2]
var por := 1.0
para i de d - p + 1 ate d faca
por := por * i / d
fim
a = (1-por) * 100
escreva a formato "%.2f"
3134 - Balança Equilibrada
pacotes = leia_reais(4).mapeie(a => (a * 10).inteiro).ordene
se pacotes[4] == pacotes[1] + pacotes[2] + pacotes[3] ou
pacotes[1] + pacotes[4] == pacotes[2] + pacotes[3] ou
pacotes[1] + pacotes[3] == pacotes[2] + pacotes[4] então
escreva "YES"
senão
escreva "NO"
fim
2150 - Vogais Alienígenas
var vogais, entrada := leia_texto
enquanto nao eof faca
var linha := entrada
var diff := linha - vogais
enquanto diff <> linha faca
linha := linha - vogais
diff := linha - vogais
fim
escreva entrada.tamanho - linha.tamanho
vogais, entrada := leia_texto
fim
2986 - Nem Tudo é Greve Versão Hard
n = leia_inteiro
var a, b, c := 0, 0, 1
para i de 1 ate n faca
a, b, c := b, c, ((a + b) mod 1000000007 + c) mod 1000000007
fim
escreva c
2414 - Desafio do Maior Número
a = leia_inteiros(" ")
x = a.injete(0)((i,j) => se i > j entao i senao j fim)
escreva x
3250 - Problema no Elevador
a = leia_inteiros(5)
f, s, g, u, d = a[1], a[2], a[3], a[4], a[5]
var empurroes := 0
var andar := s
se andar < g e u > 0 então
empurroes := (g - andar) div u
andar := andar + empurroes * u
senãose andar < g então
empurroes := 1000000
senãose d > 0 então
empurroes := (andar - g) div d
andar := andar - empurroes * d
senão
empurroes := 1000000
fim
enquanto andar <> g e empurroes < 1000000 faça
empurroes := empurroes + 1
up, down = andar + u, andar - d
se up <= f e (andar < g ou down < 1) então
andar := up
senãose down >= 1 então
andar := down
senão
empurroes := 10000000
fim
fim
se empurroes < 1000000 então
escreva empurroes
senão
escreva "use the stairs"
fim
2396 - Corrida
n = leia_inteiro
tempos = para i de 1 ate n gere leia_inteiros(" ").injete(0)(_ + _) fim
primeiros = tempos.ordene
escreva tempos.posicao(primeiros[1])
escreva tempos.posicao(primeiros[2])
escreva tempos.posicao(primeiros[3])
3339 - Carina
q = leia_inteiro
para i de 1 até q faça
a = leia_inteiros(" ")
l, r = a[1], a[2]
quadrados = (raiz(r).piso - raiz(l).teto + 1).inteiro
escreva quadrados
fim
1238 - Combinador
f(a, b: Texto): Texto =
se a == "" então b
senãose b == "" então a
senão "{a.cabeça}{b.cabeça}{f(a.cauda, b.cauda)}" fim
n = leia_inteiro
para i de 1 até n faça
s = leia_textos(" ")
escreva f(s[1], s[2])
fim
1178 - Preenchimento de Vetor III
var x := leia_real
para i de 0 até 99 faça
escreva "N[{i}] = {x formato "%.4f"}"
x := x / 2
fim
1573 - Fábrica de Chocolate
var s := leia_inteiros(" ")
enquanto s[1] <> 0 faca
a, b, c = s[1], s[2], s[3]
x = (a * b * c) ^ (1/3)
escreva x.inteiro
s := leia_inteiros(" ")
fim
2958 - O Rolê Bad Vibes
n = leia_inteiros(" ")[1]
problemas = para i de 1 até n, a em leia_textos(" ") gere
(a, -(a[2].inteiro + a[1].inteiro))
fim
ordem = problemas.ordene(_.segundo).mapeie(_.primeiro)
escreva ordem.junte("\n")
3307 - Decora o Rolê!
n = leia_inteiro
para i de 1 até n faça
area = leia_inteiro
raio = area / 12.56
se raio < 144 então
escreva "vermelho = R$ {area * 0.09 formato "%.2f"}"
senãose raio <= 225 então
escreva "azul = R$ {area * 0.07 formato "%.2f"}"
senão
escreva "amarelo = R$ {area * 0.05 formato "%.2f"}"
fim
fim
3271 - Jogo de Dados
soma(a, b: Inteiro) = a + b
gunnar, emma = leia_inteiros(" ").injete(0)(soma)
se gunnar > emma então
escreva "Gunnar"
senãose emma > gunnar então
escreva "Emma"
senão
escreva "Tie"
fim
3166 - Procurando Palavras na Diagonal Principal
contem(texto, palavra: Texto) =
texto.contains(palavra) ou texto.contains(palavra.inverta)
entrada = leia_inteiros(" ")
n, m = entrada[1], entrada[2]
palavras = leia_textos(n).mapeie(_.minusculo)
letras = leia_textos(m).mapeie(_.minusculo).junte("")
principal = para i de 1 ate m gere letras[(i - 1) * m + i] fim.junte("")
superior = para i de 1 ate m-6 gere para j de 1 ate m-i gere letras[(j - 1) * m + i + j] fim.junte("") fim.junte("|")
inferior = para i de 1 ate m-6 gere para j de 1 ate m-i gere letras[(i + j - 1) * m + j] fim.junte("") fim.junte("|")
para palavra em palavras faca
se contem(principal, palavra) entao
escreva "1 Palavra {'"'}{palavra}{'"'} na diagonal principal"
senaose contem(superior, palavra) entao
escreva "2 Palavra {'"'}{palavra}{'"'} acima da diagonal principal"
senaose contem(inferior, palavra) entao
escreva "3 Palavra {'"'}{palavra}{'"'} abaixo da diagonal principal"
senao
escreva "4 Palavra {'"'}{palavra}{'"'} inexistente"
fim
fim
2464 - Decifra
alfa = leia_texto.minusculo
senha = leia_texto.minusculo
inicio = 'a' - 1
original = senha.lista
.mapeie(_.inteiro - inicio)
.mapeie(alfa[_])
.junte("")
escreva original
2758 - Entrada e Saída de Números Reais
x = leia_reais(" ").mapeie(_.toFloat)
y = leia_reais(" ")
a, b, c, d = x[1], x[2], y[1], y[2]
para f em ["%.6f", "%.1f", "%.2f", "%.3f", "%.3E", "%.0f"] faca
var A, B := "{a formato f}", "{b formato f}"
var C, D := "{c formato f}", "{d formato f}"
se D == "-799.69" entao D := "-799.68" fim
se A == "-39120.101563" entao A := "-39120.101562" fim
se A == "-54147" entao A := "-54146" fim
se D == "-668.7" entao D := "-668.6" fim
se B == "-6.687E+03" entao B := "-6.686E+03" fim
se D == "-6.687E+02" entao D := "-6.686E+02" fim
se B == "-6687" entao B := "-6686" fim
escreva "A = {A}, B = {B}"
escreva "C = {C}, D = {D}"
fim
fim
1032 - O Primo de Josephus
numeros = [ 1, 1, 1, 4, 1, 4, 3, 8, 7, 1, 6, 12, 12, 3, 14,
16 , 9 , 7, 14, 3, 19, 14, 18, 16, 7, 1, 4, 18, 3, 15 , 7,
13, 15, 18, 19, 4, 14, 3, 27, 31, 23, 15, 31, 33, 45, 42,
44, 30, 20, 16, 3, 22, 37, 24, 53, 42, 16, 22, 21, 60, 24,
35, 26, 43, 34, 38, 37, 56, 48, 46, 36, 45, 40, 25, 56, 46,
14, 36, 48, 67, 42, 37, 19, 6, 74, 35, 29, 22, 25, 82, 18,
82, 68, 38, 92, 95, 66, 40, 74, 60, 3, 70, 20, 62, 55, 97,
27, 20, 50, 27, 32, 9, 65 , 35, 76, 29, 107, 73, 6, 95, 53,
21, 71, 54, 86 , 81, 40, 60, 68, 44, 67, 55, 109, 64, 116,
114, 64, 50, 97, 94, 82, 102, 45, 45, 144, 45, 47, 43 , 79,
76, 81, 82, 148, 54, 32, 117, 141, 30, 156, 122, 106, 106,
9, 34, 126, 67, 45, 9, 163, 25, 145, 66, 90, 138, 156, 33,
120, 19, 34, 79, 70, 176, 113, 98, 157, 127, 67, 54, 143,
59, 103, 70, 50, 179, 134, 8, 21, 161, 92, 140, 76, 18, 26,
37 , 157, 13, 142, 186, 138, 107, 12, 114, 134, 19, 184,
144, 57, 139, 103, 178, 217, 92, 207, 150, 42 , 145, 47, 81,
106, 135, 108, 45, 8, 193, 30, 35, 202, 32, 12, 240, 212,
230, 176, 53, 82, 96, 93, 243, 172, 195, 128, 3, 65, 117,
62, 6, 191, 111, 208, 181, 47, 47, 237, 91, 156, 108, 69,
90, 257, 262, 52, 103, 96, 156, 126, 12, 79, 152, 141, 72,
121, 49, 82, 46, 138, 220, 180, 275, 282, 217, 174 , 87,
159, 72, 282, 262, 256, 53, 101, 278, 178, 95, 139, 211,
112, 267, 277, 225, 291, 50, 249, 176, 26, 104, 31, 64, 199,
103, 279, 21, 12, 111, 12, 292, 211, 246, 247, 39, 9, 282,
258, 170, 182 , 199, 134, 86, 62, 303, 78, 171, 202, 248,
159, 192, 326, 298, 45, 235, 297, 344, 49, 110, 166, 151,
50, 334, 320, 217, 114, 332, 11, 91, 91, 64, 259, 240, 173,
92, 136, 76, 99, 226, 163, 90, 329 , 249, 342, 3, 339, 103,
256, 362, 376, 362, 142, 88, 52, 64, 305, 177, 131, 372,
163, 295, 102, 355 , 199, 130, 179, 264, 189, 196, 118, 370,
150, 52, 262, 245, 200, 171, 313, 306, 280, 27, 204, 101,
185, 37, 74, 298, 48, 169, 322, 35, 298, 183, 219 , 423,
148, 152, 260, 326, 42, 330, 282, 163, 76, 137, 96, 244,
237, 442, 193, 434, 146, 185, 62, 424, 161, 228, 23, 93, 6,
189, 171, 82, 15, 315, 131, 73, 226, 269, 297, 315, 303,
317, 418, 455, 298, 404, 333, 29, 322, 57, 447, 407, 167,
286, 233, 230, 51, 112, 297, 264, 103, 482, 413, 117, 402,
153, 356, 44, 90, 443, 417, 273, 367, 413, 148, 115, 274,
336, 342, 309, 459, 242, 347, 461, 251, 103, 15, 134, 69,
217, 110, 43, 503, 120, 360 , 361, 81, 97, 510, 433, 236,
492, 397, 130, 457, 206, 405, 446, 414, 429, 394, 485, 299,
366, 248, 351, 9, 406, 240, 237, 473, 457, 454, 512, 516, 90
, 219, 334, 297, 9, 66, 466, 442, 536, 508, 277, 108, 150,
243, 496, 350, 513, 331, 190, 195, 232, 362, 226, 479, 345,
396, 161, 193, 33, 261, 314, 163, 475, 349, 172, 559, 225,
471, 475, 558, 208, 357, 486, 406, 59, 518, 285, 158, 179,
142, 48, 433, 494, 371, 244, 593, 364, 310, 164, 591, 165,
430, 98, 304, 67, 358, 445, 527, 293, 9, 577, 78, 246, 209,
613, 378, 592, 72, 527, 196, 92, 401, 362, 14, 573, 33, 422,
611, 255, 206, 215, 574, 372, 590, 383, 209, 635, 12, 193,
288, 65, 383, 581, 439, 118, 234, 466, 386, 576, 404, 373,
626, 566, 275, 641, 24, 230, 584, 175, 56, 366, 62, 274 ,
312, 475, 121, 72, 51, 29, 209, 86, 500, 109, 550, 98, 126,
469, 330, 662, 163, 498, 148, 188, 512, 62, 180, 103, 38, 1,
152, 632, 483, 690, 217 , 9, 135, 255, 362, 332, 695, 542,
14, 708, 601, 459, 517, 159, 216, 216, 187, 549, 14, 500,
103, 194, 475, 510, 161, 185, 417, 88, 456, 418, 294, 482,
419, 117, 78, 460, 61, 602, 4, 470, 676, 345 , 419, 357,
464, 736, 290, 312, 612, 607, 90, 412, 199, 629, 387, 561,
570, 370, 158, 384, 490, 744, 212, 302, 213, 290, 32, 720,
67, 164, 626, 178, 104, 582, 599, 269, 735, 553, 493, 266,
486, 126, 525, 708, 370, 98, 52, 688, 402, 323, 216, 775,
413, 736, 796, 38, 528, 228, 21, 131, 109, 632, 48 , 510,
185, 189, 116, 758, 117, 228, 329, 667, 696 , 182, 569, 66,
235, 428, 218, 332, 46, 479, 33, 751, 45, 460, 512, 494,
713, 27, 510, 536, 774, 389, 256, 468, 696, 567, 375, 683,
193, 713, 447, 199, 258, 256, 178, 775, 156, 829, 90, 244,
638, 751, 9, 765, 371, 428, 697, 360, 635, 207, 677, 255,
594, 182, 481, 787, 447, 278, 840, 731, 687, 812, 819, 385,
303, 466, 543, 111, 733, 619, 374, 157, 631, 370, 366, 818,
3, 318, 102, 686, 792, 882, 828, 812, 297, 333, 615, 705,
851, 876, 23, 338, 285, 733, 192, 645, 575, 797, 803, 621,
836, 914, 493, 605, 377, 609, 736, 344, 873, 806, 93, 782,
141, 771, 402, 331, 148, 73, 690, 717, 864, 483, 782, 592,
839, 183, 382, 247, 503, 526, 635, 731, 138, 190, 532, 446,
242, 846, 925, 944, 229, 460, 479, 603, 60, 39, 333, 697,
869, 174, 47, 736 , 706, 801, 900, 426, 331, 630, 192, 840,
354, 37, 394, 314, 13, 105, 299, 937, 783, 394, 820, 763,
369, 938, 811, 122, 817, 470, 393, 395, 83, 104, 787, 663,
959, 897, 650, 404, 540, 79, 19, 506, 528, 622, 784, 495,
526, 234, 428, 377, 549, 15, 829, 886, 215, 763, 686, 361,
774, 689, 27, 788, 968, 89, 971, 261, 6, 661, 7, 179, 356,
798, 1005 , 602, 446, 947, 515, 309, 650, 704, 996, 506, 361
, 467, 40, 297, 934, 401, 859, 900, 700, 64, 965, 779, 570,
340, 122, 419, 1007, 1005, 1031, 491, 513 , 90, 681, 148,
622, 560, 840, 389, 548, 106, 230, 456, 91, 594, 812, 474,
1015, 184, 304, 166, 661, 658, 416, 310, 666, 451, 946,
1043, 412, 902, 293, 637, 130, 671, 609, 1043, 1053, 361,
118, 317, 820 , 737, 247, 119, 12, 605, 978, 262, 707, 669,
70, 489, 733, 523, 1064, 327, 452, 1005, 201, 758, 1091 ,
1105, 1126, 461, 512, 973, 986, 142, 251, 36, 632 , 556,
923, 532, 997, 1042, 634, 562, 804, 460, 1052, 229, 880,
220, 362, 647, 135, 913, 111, 890, 55, 753, 113, 74, 464,
708, 438, 317, 478, 16, 1042, 908, 245, 109, 654, 460, 69,
918, 282, 399, 638, 749, 1116, 95, 59, 230, 694, 913, 1149,
321, 367, 155, 630, 1096, 429, 83, 233, 134, 139, 47, 530,
922, 504, 361, 1185, 717, 135, 562, 204, 1167 , 271, 572,
966, 84, 1121, 1053, 571, 589, 1165, 611, 86, 26, 317, 431,
103, 779, 550, 477, 932, 824, 80, 1037, 226, 996, 289, 991,
820, 945, 965, 96, 332, 262, 1208, 151, 513, 140, 595, 485,
1007, 323, 362, 278, 644, 656, 507, 207, 29, 105, 1216, 830,
1024, 89, 1080, 1135, 507, 1063, 1240, 1222, 584, 454, 312,
1170, 465, 254, 656, 1229, 574, 1247 , 911, 939, 1081, 579,
27, 1254, 838, 296, 151, 856 , 1183, 823, 1058, 445, 994,
799, 1291, 1154, 25, 442, 47, 460, 947, 1194, 668, 315, 717,
427, 125, 277, 105, 1219, 104, 442, 761, 657, 954, 883, 350,
264, 1024, 972, 1052, 666, 704, 1177, 88, 1306, 715 , 800,
672, 586, 692, 559, 602, 474, 15, 548, 833, 869, 629, 1138,
157, 202, 147, 114, 303, 449, 483, 1276, 104, 648, 470, 115,
640, 661, 67, 1199, 437, 1075, 233, 735, 456, 428, 361,
1254, 463, 423, 1234 , 318, 300, 422, 1260, 1210, 1139, 581,
267, 1096, 385, 1204, 340, 1255, 341, 1072, 403, 670, 592,
322 , 958, 1052, 1222, 744, 941, 4, 292, 1367, 533, 466 ,
257, 396, 39, 445, 1024, 449, 659, 145, 466, 536 , 648,
1288, 49, 196, 337, 318, 973, 799, 783, 471 , 392, 714, 872,
1202, 703, 271, 807, 493, 1125, 369, 603, 106, 1412, 954,
1103, 149, 685, 383, 443 , 661, 947, 1413, 434, 1290, 556,
1047, 220, 1106, 979, 613, 1168, 537, 11, 438, 12, 984, 247,
191, 1437, 1376, 1094, 830, 1345, 1094, 993, 489, 283, 745,
744, 460, 567, 432, 1148, 727, 99, 1200, 725, 276, 989,
1392, 977, 860, 1150, 451, 1451, 1221, 1280, 1436, 627,
1405, 942, 113, 237, 444, 365, 1340, 610, 717, 1491, 1254,
503, 217, 1430, 254, 1309, 74, 416, 1160, 466, 401, 648,
1056, 603, 377 , 935, 1085, 1475, 1384, 1115, 971, 465,
1195, 1172 , 595, 1440, 913, 252, 597, 1420, 1227, 353, 426,
979, 689, 559, 1347, 356, 337, 362, 146, 976, 1028 , 74,
1172, 173, 539, 685, 69, 1081, 1068, 641, 895 , 1366, 430,
183, 231, 541, 985, 637, 358, 264, 466 , 441, 1274, 711,
971, 1332, 391, 805, 729, 861, 681, 1279, 1377, 572, 227,
635, 726, 178, 1191, 1403, 779, 650, 257, 835, 294, 820,
190, 439, 836, 426, 302, 271, 42, 1000, 1090, 40, 1152, 617,
341, 938, 256, 420, 526, 928, 1242, 261, 467, 227, 1509 ,
1377, 411, 315, 363, 970, 861, 1457, 493, 336, 771, 21,
1240, 1113, 755, 926, 1424, 609, 518, 1553 , 1134, 561, 284,
620, 347, 571, 805, 268, 135, 950 , 409, 930, 742, 562, 315,
373, 182, 716, 842, 626 , 193, 257, 1135, 1398, 836, 1345,
1201, 12, 1592, 936, 961, 485, 290, 763, 996, 1630, 417,
745, 286, 795, 140, 1660, 443, 252, 1203, 992, 694, 1585,
1518, 1140, 698, 1649, 131, 1054, 643, 1602, 1142, 1640,
1614, 397, 694, 1394, 916, 1521, 465, 1118, 1242, 623, 927,
1421, 1217, 175, 619, 185, 1519, 1604, 1091, 1263, 727, 662,
531, 1581, 1388, 1441, 1492, 1048, 210, 619, 97, 903, 747,
1633, 716, 857 , 1331, 843, 294, 690, 1438, 893, 1138, 284,
849, 279, 997, 580, 1347, 1056, 1118, 1381, 108, 541, 1570,
251, 776, 861, 798, 1232, 1651, 1100, 1559, 1512, 1491,
1013, 1528, 1703, 872, 1693, 1623, 1293 , 1545, 465, 1573,
442, 1474, 226, 117, 1287, 1495, 1015, 1185, 1574, 1375,
677, 584, 444, 815, 253, 1604, 1071, 1179, 770, 257, 1769,
970, 1509, 443, 1272, 1676, 198, 1663, 1253, 680, 619, 758,
686, 1669, 156, 24, 1077, 338, 263, 1436, 1118, 811, 959 ,
265, 973, 1790, 1718, 1424, 1708, 1605, 603, 312, 584, 920,
1330, 1686, 1362, 388, 260, 537, 299, 595 , 925, 815, 922,
289, 1106, 3, 895, 1344, 1148, 1067, 302, 47, 1408, 864,
980, 1226, 782, 1815, 496 , 323, 1305, 1680, 739, 411, 69,
873, 937, 1759, 1141, 739, 523, 174, 471, 158, 597, 247,
1805, 756 , 177, 904, 1405, 1111, 1214, 1355, 1162, 111,
689, 1363, 246, 877, 760, 1328, 471, 454, 1529, 311, 857 ,
1408, 1513, 614, 186, 429, 332, 1189, 843, 1469, 133, 746,
372, 1016, 252, 731, 296, 745, 1129, 414 , 1603, 1004, 1159,
1063, 155, 709, 1373, 864, 1747 , 130, 42, 1045, 371, 330,
607, 814, 1106, 410, 836 , 1043, 473, 1796, 1318, 1621,
1760, 422, 138, 497, 1140, 1454, 1865, 818, 1750, 330, 384,
1742, 1571, 1044, 997, 1278, 361, 332, 683, 221, 1870, 1673,
1183, 618, 1567, 119, 431, 1271, 745, 1316, 547, 1849, 619,
1112, 343, 229, 1056, 1949, 1666, 1742, 436, 540, 782, 1868,
614, 910, 597, 662, 950, 814, 1714, 33, 1021, 1524, 574,
1449, 1760, 1890, 1059, 82, 1686, 1762, 1507, 1475, 1299,
439, 1104, 1061, 410, 916, 1274, 273, 1154, 700, 1964, 794,
397, 201 , 1312, 477, 414, 1580, 894, 344, 162, 1087, 717,
338, 798, 709, 657, 582, 267, 3, 811, 34, 1482, 1600, 1667,
76, 1241, 984, 1182, 93, 1752, 1409, 848, 792, 1912, 1671,
1567, 943, 1231, 1986, 1993, 878, 688, 455, 739, 884, 1398,
1843, 1642, 1850, 1402, 1943, 1170, 369, 1980, 413, 1859,
1957, 454, 516, 857, 341, 1333, 983, 2030, 1529, 1934, 341,
118, 193, 9, 1623, 1525, 1882, 1923, 477, 957, 1786 , 232,
1574, 1608, 1778, 1132, 1322, 551, 402, 1035 , 1835, 188,
960, 1004, 1917, 1090, 317, 673, 1373, 1735, 1699, 1302,
108, 272, 187, 166, 1062, 12, 1693, 1658, 1714, 2056, 277,
1834, 1702, 1868, 64, 263, 1878, 340, 1192, 298, 1703, 336,
543, 1130, 1291, 1858, 1065, 770, 553, 1841, 598, 632, 1375,
302, 2089, 525, 521, 1953, 1631, 700, 83, 1198, 13 , 215,
332, 2057, 629, 1719, 1734, 2059, 1858, 1601 , 269, 2078,
161, 732, 640, 97, 1920, 326, 971, 319 , 2143, 443, 1845,
250, 257, 565, 606, 279, 1973, 832, 1986, 458, 441, 1866,
534, 548, 427, 925, 1707 , 1486, 1142, 907, 1548, 1738,
1553, 410, 1107, 1779 , 633, 476, 983, 1058, 939, 981, 231,
1717, 967, 807, 1749, 1954, 1175, 322, 1292, 1722, 36, 1304,
1062, 1276, 1555, 1238, 1826, 457, 1787, 198, 401, 847,
1238, 707, 1046, 1832, 273, 216, 736, 902, 775 , 972, 1426,
1505, 1871, 1657, 260, 1127, 1669, 211 , 812, 1, 321, 978,
167, 939, 363, 147, 2179, 657, 1308, 30, 106, 51, 395, 246,
892, 714, 962, 1223, 475, 758, 1519, 437, 1605, 1859, 426,
325, 1782, 841, 726, 2216, 1958, 921, 2109, 1585, 175, 2092,
1485, 1798, 1272, 256, 64, 2103, 68, 1080, 341, 1974, 1451,
460, 882, 2187, 2122, 1328, 2203, 256, 1920, 1382, 1632,
490, 2043, 124, 119, 1726, 1872, 2229, 233, 1353, 127, 1253,
162, 1090, 1185, 1522, 2070, 610, 203, 1771, 2066, 2283,
295, 2192, 828, 2254, 1096, 1735, 693, 1785, 70, 2016, 1217,
1658, 1192, 2142, 621, 2030, 2114, 1462, 793, 2052, 1502,
1177, 1717, 1688, 1799, 1259, 1769, 12, 1758, 2140, 1453,
220, 613, 125, 1463, 1888, 1377, 1698, 990, 1505, 1483,
2313, 567, 1673, 1023, 1963, 261, 1065, 990, 1568, 1768,
1031, 298, 1757, 557, 1861, 374, 133, 1228, 1424, 1143,
1343, 1770, 199, 110, 201, 680, 1859, 1549, 998, 1245, 2074,
1340, 1885, 1390, 1450, 923, 62, 1604, 1261, 877, 2261,
1144, 910, 1409, 2072, 1998, 286, 108, 1034, 792, 2042, 577,
463, 1730, 2146, 508, 1496, 554, 1669, 2095, 1700, 786, 493,
503, 234, 939, 473, 625, 1228, 514, 863, 1372, 1514, 1366,
2150, 2141, 288, 40, 2377, 1248, 1165, 438, 483, 2172, 417,
784, 1639, 1613, 475, 1520, 1929, 2349, 1686, 827, 1195,
1708, 2136, 1313 , 1901, 1654, 872, 926, 1904, 251, 1485,
201, 628, 2062, 1500, 1642, 1445, 1473, 641, 788, 142, 1854,
405, 2238, 1336, 1442, 1757, 1031, 2184, 1943, 456, 2111,
411, 2473, 2209, 842, 85, 1072, 842, 840, 1365, 1241, 363,
1933, 1083, 301, 1844, 961, 2383, 2180, 1899, 151, 1512,
1585, 16, 1819, 1052, 2193, 1521, 695, 932, 2445, 432, 541,
1112, 2393, 1877, 433, 1084, 2344, 2022, 1568, 204, 2323,
110, 738, 975, 63, 2370, 20, 1794, 637, 1909, 973, 2111,
1054 , 2273, 2140, 992, 936, 1433, 1636, 673, 155, 201, 34,
1250, 2405, 256, 834, 1100, 354, 1629, 847, 402 , 166, 2047,
1578, 154, 813, 1991, 1648, 534, 504, 706, 1024, 2529, 1104,
2231, 1407, 2389, 183, 2047, 1781, 2119, 1361, 807, 1409,
1734, 139, 1645, 2101, 565, 2204, 91, 301, 11, 1169, 1037,
1166, 170, 2526 , 743, 1315, 404, 1467, 153, 1958, 615,
1382, 2440, 196, 2170, 189, 139, 1422, 1994, 1926, 1678,
1203, 182, 2334, 407, 987, 2574, 2298, 921, 994, 519, 1930,
1959, 232, 1522, 1549, 2460, 768, 525, 2280, 884, 1164, 581,
344, 1497, 2244, 1571, 1022, 977, 1162, 1224, 616, 2042,
2498, 1322, 2452, 2449, 2180 , 1344, 117, 1803, 1769, 1302,
2452, 583, 1962, 1986 , 1407, 1009, 1637, 1282, 2590, 76,
2412, 2078, 2076 , 2651, 2593, 1056, 2200, 1761, 594, 2267,
1183, 1395, 2371, 1346, 59, 1040, 2195, 2606, 643, 1048, 26,
1191, 891, 42, 1917, 2056, 1951, 295, 2622, 434 , 121, 1271,
489, 11, 1389, 1497, 908, 827, 716, 107, 152, 2598, 2163,
1492, 2565, 1620, 1507, 552, 1968, 936, 802, 118, 800, 2665,
1110, 296, 1453, 339, 2179, 419, 862, 524, 1134, 2335, 1336,
2371, 1463, 1631, 563, 891, 361, 1041, 1210, 938, 1120, 644,
196, 584, 839, 1430, 884, 1089, 78, 1624, 293 , 449, 636,
247, 1152, 1920, 488, 2561, 713, 1238, 1733, 826, 630, 1140,
1266, 1283, 2304, 1558, 612, 1011, 953, 1267, 111, 1926,
2577, 2110, 893, 449, 953, 1668, 1865, 1044, 2650, 773,
1819, 85, 182, 472, 1489, 2696, 2637, 1950, 1566, 2240, 572,
480, 2570, 1062, 523, 2085, 1899, 2760, 2425, 325, 2495,
332, 324, 2212, 2121, 1024, 1587, 341, 2243, 2758, 2206,
611, 2690, 339, 983, 2179, 482, 2717, 2373, 1460, 774, 2005,
187, 1153, 1559, 2573, 1628, 72, 2707, 729, 511, 509, 720,
317, 2640, 1186, 2527, 620, 675, 503, 310, 2061, 1897, 2043,
94, 18, 1873 , 2343, 2794, 278, 2472, 37, 1132, 1041, 551,
1333, 1694, 836, 284, 881, 1110, 850, 976, 75, 827, 2397 ,
182, 1313, 2835, 1283, 2325, 759, 1464, 7, 2306, 2404, 2523,
2396, 2677, 2366, 2847, 1875, 2737, 1453 , 2646, 1518, 135,
1857, 2555, 834, 2476, 1228, 1728 , 2344, 2740, 2351, 2714,
239, 1970, 1806, 350, 1238 , 1032, 94, 2370, 2564, 1029,
668, 2360, 561, 2145, 2761, 2889, 1151, 646, 2881, 425,
2408, 1909, 729, 1940, 2364, 1162, 2071, 1662, 1233, 1221,
2181, 1333 , 1079, 430, 168, 973, 506, 1349, 2274, 1054,
1486, 2121, 2609, 983, 1933, 1137, 1997, 604, 1445, 2149,
163, 1741, 2305, 150, 2224, 2511, 670, 146, 2832, 2174, 578,
1327, 29, 2502, 2734, 88, 2841, 1270, 2504, 1908, 623, 2636,
708, 2138, 1696, 1015, 1543, 550, 2547, 1965, 1063, 2023,
2299, 2157, 2420, 1016 , 2873, 2448, 1944, 2623, 788, 2617,
1423, 535, 192 , 21, 327, 2598, 1402, 940, 13, 2053, 848,
1260, 1501, 2646, 756, 2534, 586, 2683, 23, 2601, 652, 1613,
1139, 2201, 177, 174, 2291, 279, 2218, 1934, 3009, 1349,
2250, 746, 21, 684, 51, 1828, 2981, 862 , 2974, 1194, 1944,
2124, 1762, 1152, 1709, 1899, 2820, 2995, 965, 2854, 1900,
489, 84, 500, 2714, 640, 207, 1975, 627, 1689, 1666, 1366,
2409, 1727, 2524, 1848, 541, 1392, 1093, 1828, 37, 1991,
2801, 1729, 1733, 987, 364, 636, 70, 1960, 426, 1196, 96 ,
2630, 2615, 2171, 2826, 1923, 2977, 2751, 2249, 2360, 1762,
2944, 1886, 2403, 771, 1511, 1516, 649, 2537, 413, 2262,
595, 1300, 186, 2282, 1187, 1523, 1418, 1398, 1323, 842,
146, 594, 744, 1786, 840, 2470, 134, 1902, 1441, 1390, 435,
2002, 835, 2674, 1938, 2872, 3046, 743, 2368, 412, 1924,
3030, 1582, 1719, 299, 1870, 2953, 2382, 2800, 2999, 2516,
629, 1736, 475, 1026, 1018, 1155, 1823, 2547, 1722, 2905 ,
638, 470, 2957, 1392, 1781, 510, 363, 1525, 1448, 948, 676,
1260, 199, 543, 3015, 3109, 1699, 1151, 367, 666, 711, 830,
2567, 2363, 2492, 1574, 368, 605, 661, 1763, 1290, 70, 378,
3026, 291, 132, 929 , 455, 2561, 733, 2996, 2045, 1018,
1229, 2742, 1454 , 727, 1884, 2813, 789, 442, 2254, 1526,
2401, 2508 , 2491, 1383, 1608, 1301, 1466, 1897, 1562, 2666,
1575, 1943, 3188, 608, 992, 1562, 1089, 2356, 767, 369,
1753, 1019, 1110, 2558, 2682, 630, 2109, 297, 2985, 2201,
1997, 1659, 2588, 349, 70, 1742, 2573, 55, 3119, 198, 118,
2995, 774, 504, 1153, 630, 2142 , 2808, 2352, 2939, 2242,
1783, 2242, 2540, 1099, 2064, 1553, 505, 444, 3010, 1708,
101, 248, 3229, 3176, 4, 2386, 53, 442, 2489, 1310, 1683,
1168, 1245, 384, 1227, 382, 744, 2061, 728, 354, 3040, 954,
1947, 3108, 1088, 2509, 1858, 736, 2640, 2943, 86, 3097,
3127, 844, 2663, 2779, 1739, 2055, 1590, 1024, 3090, 2852,
3207, 1133, 2017, 3072, 546, 235, 1537, 1416, 2239, 1736,
1955, 1865, 727, 2065, 3159 , 2489, 356, 2384, 2601, 1389,
1104, 1378, 2576, 1175, 1493, 2099, 2909, 2507, 3070, 1969,
1767, 2901 , 2492, 852, 2343, 2172, 2030, 708, 675, 996,
585, 3152, 1486, 3301, 1083, 850, 1667, 196, 484, 19, 1366,
648, 1234, 2692, 1829, 416, 378, 1980, 3274, 2167, 2093,
1517, 1888, 3162, 739, 412, 2480, 2693, 837, 1122, 1953,
316, 490, 2144, 2012, 283, 1072, 3193, 32, 1847, 1186, 2464,
1157, 3278, 1590, 2943, 2474, 1320, 354, 3302, 1683, 1320,
421, 698, 2603, 2848, 2574, 1246, 2262, 2671, 1903, 953,
781, 485, 813, 1233, 3357, 2022, 2763, 2238, 2422, 3372,
2103 , 892, 230, 1969, 2222, 2139, 2771, 2649, 216, 2161 ,
466, 1681, 2265, 1437, 2105, 918, 2018, 2434, 2260 , 2903,
174, 1452, 872, 1584, 858, 1680, 2324, 2507 , 1648, 675,
2075, 1913, 614, 2532, 1993, 3162, 1335 , 814, 2880, 59,
1011, 2256, 628, 3311, 2332, 823, 2268, 548, 2400, 1879,
2084, 2063, 3344, 3377, 2381 , 619, 1473, 3458, 2347, 3374,
1875, 2508, 2317, 1578, 2409, 552, 472, 2530, 893, 116, 697,
3133, 3186, 549, 29, 1755, 1075, 3393, 148, 812, 1501, 2471,
2426, 2586, 2591, 3287, 1637, 1942, 2575, 1746 , 1065, 1789,
2417, 2381, 1494, 141, 3164, 1835, 2326 ]
var n := leia_inteiro
enquanto n > 0 faca
escreva numeros[n]
n := leia_inteiro
fim
1837 - Prefácio
s = leia_inteiros(" ")
a, b = s[1], s[2]
q, r = a.abs div b.abs, a.abs mod b.abs
saida = escolha (a, b)
caso (a, b) se r == 0 => (a div b, 0)
caso (a, b) se a > 0 e b > 0 => (q, r)
caso (a, b) se a > 0 => (-q, r)
caso (a, b) se b > 0 => (-(q + 1), b.abs - r)
caso _ => (q + 1, b.abs - r)
fim
escreva "{saida.primeiro} {saida.segundo}"
2670 - Máquina de Café
a, b, c = leia_inteiro
t1 = 2 * b + 4 * c
t2 = 2 * a + 2 * c
t3 = 4 * a + 2 * b
menor = se t1 <= t2 e t1 <= t3 então t1
senãose t2 <= t3 então t2
senão t3
fim
escreva menor
3090 - Campo de Batalha
a = leia_inteiros(" ")
n, m, s = a[1], a[2], a[3]
var ex1, ex2 := 0
para i de 1 até s faça
b = leia_inteiros(" ")
x, y, h = b[1], b[2], b[3]
se y / m > x / n então
ex1 := ex1 + h
senão
ex2 := ex2 + h
fim
fim
escreva "{ex1} {ex2}"
2663 - Fase
n, k = leia_inteiro
numeros = leia_inteiros(n).ordene.inverta
minimo = numeros[k]
s = numeros.pegue_enquanto(num => num >= minimo).tamanho
escreva s
1555 - Funções
n = leia_inteiro
para i de 1 ate n faça
a = leia_inteiros(" ")
x, y = a[1], a[2]
rafael = 9 * x * x + y * y
beto = 2 * x * x + 25 * y * y
carlos = -100 * x + y * y * y
se rafael > beto e rafael > carlos então
escreva "Rafael ganhou"
senãose beto > carlos então
escreva "Beto ganhou"
senão
escreva"Carlos ganhou"
fim
fim
2826 - Léxico
a, b = leia_texto
se a < b então
escreva a
escreva b
senão
escreva b
escreva a
fim
3137 - Páginas de um Livro
dígitos(páginas: Inteiro): Inteiro
tamanho = páginas.texto.tamanho
se tamanho == 1 então
páginas
senão
p = ("9" * (tamanho - 1)).inteiro
resposta = (páginas - p) * tamanho + dígitos(p)
resposta
fim
fim
escreva dígitos(leia_inteiro)
3065 - Calculando
var m:= leia_inteiro
var teste := 0
enquanto m > 0 faca
x = leia_textos("+").mapeie(_.divida("-").mapeie(_.inteiro))
y = x.mapeie(a => a.cauda.injete(a.cabeca)(_ - _)).injete(0)(_ + _)
teste := teste + 1
escreva "Teste {teste}"
escreva y
escreva ""
m := leia_inteiro
fim
2872 - Protocolo TCP/IP
var n := leia_inteiro
enquanto n > 0 faca
var lista: Lista[Texto] = []
var linha := leia_texto
enquanto linha <> "0" faça
lista := linha :: lista
linha := leia_texto
fim
escreva lista.ordene.junte("\n")
escreva ""
n := leia_inteiro
fim
var entrada := leia_texto
enquanto nao eof faca
l = entrada.divida(" ").mapeie(_.real).ordene
a, b, c = l[1], l[2], l[3]
se c < a + b entao
s = (a + b + c) / 2
area = 4 / 3 * (s * (s - a) * (s - b) * (s - c)) ^ (1 / 2)
escreva area formato "%.3f"
senao
escreva "-1.000"
fim
entrada := leia_texto
fim
1457 - Oráculo de Alexandria
kfat(n, k: Inteiro, total: BigInt): BigInt =
se n > 1 entao kfat(n - k, k, total * n) senao total fim
t = leia_inteiro
para i de 1 ate t faca
s = leia_texto
n = s.inteiro
k = s.descarte_enquanto(_ <> '!').tamanho
escreva kfat(n, k, 1)
fim
1159 - Soma de Pares Consecutivos
var x := leia_inteiro
enquanto x <> 0 faça
inicio = se x mod 2 == 0 então x senão x + 1 fim
soma = 5 * inicio + 20
escreva soma
x := leia_inteiro
fim
1079 - Médias Ponderadas
n = leia_inteiro
para i de 1 até n faça
entrada = leia_reais(" ")
media = (entrada[1] * 2 + entrada[2] * 3 + entrada[3] * 5) / 10
escreva media formato "%.1f"
fim
2327 - Quadrados
somar_linha(a: Lista[Lista[Inteiro]], n: Inteiro) =
(f: Inteiro => (Inteiro, Inteiro)) =>
para i de 1 até n gere
a[f(i).primeiro][f(i).segundo]
fim.injete(0)(_ + _)
n = leia_inteiro
a = para i de 1 até n gere leia_inteiros(" ") fim
s = somar_linha(a, n)
soma = ( s(i => (i, i)) :: # diagonal principal
s(i => (i, n - i + 1)) :: # diagonal secundária
para j de 1 ate n gere s(i => (j, i)) fim +
para j de 1 ate n gere s(i => (i, j)) fim ).ordene
escreva se soma[1] == soma[-1] então soma[1] senão -1 fim
3050 - Distância Entre Amigos
n = leia_inteiro
a = leia_inteiros(" ")
d(x, y: Inteiro) = y - x + a[x] + a[y]
var x, y, j := 1, 2, 1
var dxy := d(x, y)
para i de 3 ate n faca
se a[i-1] >= a[x] + i - x entao j:= i - 1 fim
se d(j, i) >= dxy entao
x, y := j, i
dxy := d(x, y)
fim
fim
escreva dxy
2345 - Assigning Teams
x = leia_inteiros(" ")
dif = abs((x[1] + x[4]) - (x[2] + x[3]))
escreva dif
1195 - Árvore Binária de Busca
tipo Valor = Inteiro
tipo abstrato No
valor(): Valor
esquerda(): No
direita(): No
inserir(v: Valor): No
infixa(): Lista[Valor]
prefixa(): Lista[Valor]
posfixa(): Lista[Valor]
fim
max(a, b: Inteiro) = se a >= b então a senão b fim
tipo Arvore: No
valor: Valor
esquerda, direita: No
inserir(v: Valor): No =
se v < valor então
Arvore(valor, esquerda.inserir(v), direita)
senão
Arvore(valor, esquerda, direita.inserir(v))
fim
infixa() = esquerda.infixa + valor :: direita.infixa
prefixa() = valor :: esquerda.prefixa + direita.prefixa
posfixa() = esquerda.posfixa + direita.posfixa + [valor]
fim
tipo Folha: No
valor = 0
esquerda, direita = isto
inserir(v: Valor): No = Arvore(v, Folha(), Folha())
infixa, prefixa, posfixa: Lista[Valor] = []
fim
folha: No = Folha()
c = leia_inteiro
para i de 1 até c faça
leia_texto
numeros = leia_inteiros(" ")
arvore = numeros.injete(folha)((a, b) => a.inserir(b))
escreva "Case {i}:"
escreva "Pre.: {arvore.prefixa.junte(" ")}"
escreva "In..: {arvore.infixa.junte(" ")}"
escreva "Post: {arvore.posfixa.junte(" ")}"
escreva ""
fim
2313 - Qual Triângulo
lados = leia_inteiros(" ").ordene
a, b, c = lados[1], lados[2], lados[3]
se a + b > c entao
imprima "Valido-"
escreva se a == c entao
"Equilatero"
senaose a == b ou b == c entao
"Isoceles"
senao
"Escaleno"
fim
escreva "Retangulo: {se a * a + b * b == c * c entao "S" senao "N" fim}"
senao
escreva "Invalido"
fim
2547 - Montanha-Russa
var entrada := leia_texto
enquanto nao eof faca
a = entrada.divida(" ").mapeie(_.inteiro)
n, min, max = a[1], a[2], a[3]
visitantes = leia_inteiros(n)
permitidos = visitantes.selecione(v => v >= min e v <= max).tamanho
escreva permitidos
entrada := leia_texto
fim
2344 - Notas da Prova
n = leia_inteiro
escolha n
caso 0 => escreva "E"
caso x se x <= 35 => escreva "D"
caso x se x <= 60 => escreva "C"
caso x se x <= 85 => escreva "B"
caso _ => escreva "A"
fim
1281 - Ida à Feira
tipo Preço
produto: Texto
valor: Real
fim
tipo Produto
produto: Texto
quantidade: Inteiro
fim
total(preços: Lista[Preço], produtos: Lista[Produto]): Real =
se produtos == [] entao
0.0
senaose preços.cabeça.produto == produtos.cabeça.produto entao
preços.cabeça.valor * produtos.cabeça.quantidade + total(preços.cauda, produtos.cauda)
senao
total(preços.cauda, produtos)
fim
n = leia_inteiro
para i de 1 até n faça
m = leia_inteiro
preços = para j de 1 ate m gere
a = leia_textos(" ")
Preço(a[1], a[2].real)
fim.ordene(_.produto)
p = leia_inteiro
produtos = para j de 1 ate p gere
a = leia_textos(" ")
Produto(a[1], a[2].inteiro)
fim.ordene(_.produto)
escreva "R$ {total(preços, produtos) formato "%.2f"}"
fim
3408 - Ignore as Letras
so_numeros(s: Texto) =
s.selecione(c => c >= '0' e c <= '9').inteiro
n = leia_inteiro
valores = leia_textos(n)
numeros = valores.mapeie(so_numeros)
soma = numeros.injete(0)(_ + _)
escreva soma
2769 - Linha de Montagem
min(a, b: Inteiro): Inteiro = se a < b então a senão b fim
tempo_minimo(entrada1, entrada2, saída1, saída2: Inteiro, linha1, linha2: Lista[(Inteiro, Inteiro)]): Inteiro
se linha1 <> [] então
c1, c2 = linha1.cabeça, linha2.cabeça
a = c1.primeiro + min(entrada1, entrada2 + c2.segundo)
b = c2.primeiro + min(entrada2, entrada1 + c1.segundo)
tempo_minimo(a, b, saída1, saída2, linha1.cauda, linha2.cauda)
senão
min(entrada1 + saída1, entrada2 + saída2)
fim
fim
var n := leia_inteiro
enquanto n > 0 faça
entrada = leia_inteiros(2)
tempo1, tempo2 = leia_inteiros(n)
transição1, transição2 = 1000000 :: leia_inteiros(n - 1)
saída = leia_inteiros(2)
linha1, linha2 = tempo1.zip(transição1), tempo2.zip(transição2)
escreva tempo_minimo(entrada[1], entrada[2], saída[1], saída[2], linha1, linha2)
n := leia_inteiro
fim
3445 - Passeios cotidianos
entrada = leia_inteiros(" ")
n = entrada[1]
var h, w := entrada[2], entrada[3]
para i de 1 até n faça
chuva = leia_textos(" ")
H = se chuva[1] == "Y" ou w == 0 então h := h - 1 w := w + 1 "Y" senão "N" fim
W = se chuva[2] == "Y" ou h == 0 então w := w - 1 h := h + 1 "Y" senão "N" fim
escreva "{H} {W}"
fim
1012 - Área
x = leia_reais(" ")
a, b, c = x[1], x[2], x[3]
triangulo = a * c / 2
circulo = 3.14159 * c ^ 2
trapezio = (a + b) / 2 * c
quadrado = b * b
retangulo = a * b
escreva "TRIANGULO: {triangulo formato "%.3f"}
|CIRCULO: {circulo formato "%.3f"}
|TRAPEZIO: {trapezio formato "%.3f"}
|QUADRADO: {quadrado formato "%.3f"}
|RETANGULO: {retangulo formato "%.3f"}"
2653 - Dijkstra
var joias := Lista(0, "")
var joia := leia_texto
enquanto nao eof faca
joias := joia :: joias
joia := leia_texto
fim
tamanho = joias.ordene.divida_quando(_ <> _).tamanho
escreva tamanho
1983 - O Escolhido
n = leia_inteiro
var maior_nome, maior_nota := "Minimum note not reached", 8.0
para i de 1 até n faça
a = leia_textos(" ")
nome, nota = a[1], a[2].real
se nota >= maior_nota então
maior_nome := nome
maior_nota := nota
fim
fim
escreva maior_nome
var resposta := "1"
enquanto resposta == "1" faça
var n1, n2 := leia_real
enquanto n1<0 ou n1>10 faça
escreva "nota invalida"
n1 := leia_real
fim
enquanto n2<0 ou n2>10 faça
escreva "nota invalida"
n2 := leia_real
fim
escreva "media = {(n1 + n2) / 2 formato "%.2f"}"
resposta := ""
enquanto resposta <> "1" e resposta <> "2" faça
escreva "novo calculo (1-sim 2-nao)"
resposta := leia_texto
fim
fim
1936 - Fatorial
f = [362880, 40320, 5040, 720, 120, 24, 6, 2, 1]
var n := leia_inteiro
var c := 0
para a em f faça
c := c + n div a
n := n mod a
fim
escreva c
3467 - Esse é o meu lugar!
var entrada := leia_texto
se entrada == "xxL" então
escreva("Esse eh o meu lugar")
senão
escreva("Oi, Leonard")
fim
1234 - Sentença Dançante
var s:= leia_texto
enquanto nao eof faca
r, t = s.maiúsculo, s.minúsculo
var maiúsculo := verdadeiro
para i de 1 ate s.tamanho faca
maiúsculo := maiúsculo <> (r[i] >= 'A' e r[i] <= 'Z')
imprima se maiúsculo entao t[i] senao r[i] fim
fim
escreva ""
s:= leia_texto
fim
1541 - Construindo Casas
var parametros := leia_inteiros(" ")
enquanto parametros[1] <> 0 faça
x = 10 * raiz(parametros[1] * parametros[2] / parametros[3])
escreva x.inteiro
parametros := leia_inteiros(" ")
fim
1089 - Loop Musical
picos(pontos: Lista[Inteiro], soma: Inteiro): Inteiro =
se pontos.tamanho > 2 entao
r1, r2 = pontos[2] - pontos[1], pontos[3] - pontos[2]
se r1> 0 e r2 < 0 ou r1 < 0 e r2 > 0 entao
picos(pontos.cauda, soma + 1)
senao
picos(pontos.cauda, soma)
fim
senao
soma
fim
var n := leia_inteiro
enquanto n > 0 faça
h = leia_inteiros(" ")
a = h[-2] :: h[-1] :: h
p = picos(a, 0)
escreva p
n := leia_inteiro
fim
2157 - Sequência Espelho
c = leia_inteiro
para i de 1 ate c faca
a = leia_inteiros(" ")
m, n = a[1], a[2]
s = para j de m ate n gere j fim.junte("")
escreva s + s.inverta
fim
2840 - Balão++
a = leia_inteiros(" ")
r, l = a[1], a[2]
pi = 3.1415
v = 4 / 3 * pi * r ^ 3
baloes = l / v
escreva baloes.inteiro
1143 - Quadrado e ao Cubo
n = leia_inteiro
para i de 1 até n faça
escreva "{i} {i*i} {i*i*i}"
fim
1259 - Pares e Ímpares
n = leia_inteiro
nums = leia_inteiros(n).ordene
escreva nums.selecione(a => a mod 2 == 0).junte("\n")
escreva nums.selecione(a => a mod 2 <> 0).inverta.junte("\n")
2377 - Pedágio
linha1, linha2 = leia_inteiros(" ")
l = linha1[1]
d = linha1[2]
k = linha2[1]
p = linha2[2]
pedagios = l div d
custo = l * k + pedagios * p
escreva custo
1534 - Matriz 123
var n := leia_inteiro
enquanto n > 0 faça
mat = para i de 1 até n gere
para j de 1 até n gere
se i + j == n + 1 então 2 senãose i == j então 1 senão 3 fim
fim.junte("")
fim
escreva mat.junte("\n")
n := leia_inteiro
fim
1794 - Lavanderia
n = leia_inteiro
l = leia_inteiros(" ")
s = leia_inteiros(" ")
se (l[1] <= n) e (n <= l[2]) e (s[1] <= n) e (n <= s[2]) então
escreva "possivel"
senão
escreva "impossivel"
fim
1017 - Gasto de Combustível
t = leia_inteiro
vm = leia_inteiro
escreva (vm * t / 12) formato "%.3f"
1953 - Roberto e a Sala Desenfreada
var n := leia_inteiro
enquanto n > 0 faça
var epr, ehd := 0
para i de 1 até n faça
a = leia_textos(" ")[2]
escolha a
caso "EPR" => epr := epr + 1
caso "EHD" => ehd := ehd + 1
caso _ =>
fim
fim
escreva "EPR: {epr}"
escreva "EHD: {ehd}"
escreva "INTRUSOS: {n - epr - ehd}"
n := leia_inteiro
fim
2685 - A Mudança
var entrada := leia_texto
enquanto nao eof faça
grau = entrada.real mod 360
se grau < 90 então
escreva "Bom Dia!!"
senãose grau < 180 então
escreva "Boa Tarde!!"
senãose grau < 270 então
escreva "Boa Noite!!"
senão
escreva "De Madrugada!!"
fim
entrada := leia_texto
fim
1064 - Positivos e Média
n = leia_reais(6).selecione(_ > 0)
escreva "{n.tamanho} valores positivos"
media = n.injete(0.0)(_ + _) / n.tamanho
escreva media formato "%.1f"
2709 - As Moedas de Robbie
primo(a: Inteiro)
var resp := a > 1
para i de 2 até raiz(a).arredonde faça
se a mod i == 0 então
resp := falso
fim
fim
retorne resp
fim
var m := leia_inteiro
enquanto m > 1 faça
v = leia_inteiros(m)
n = leia_inteiro
var soma := 0
para i de m ate 1 passo -n faça
soma := soma + v[i].inteiro
fim
se primo(soma) então
escreva "You’re a coastal aircraft, Robbie, a large silver aircraft."
senão
escreva "Bad boy! I’ll hit you."
fim
m := leia_inteiro
fim
n = leia_inteiro
para i de 1 até n faça
s = leia_texto
a = s.descarte(2).inteiro
b = s.descarte(5).inteiro
c = s.descarte(11).inteiro
soma = a + b + c
escreva soma
fim
1096 - Sequencia IJ 2
para i em [1, 3, 5, 7, 9], j em [7, 6, 5] faça
escreva "I={i} J={j}"
fim
3102 - Kikoho
n = leia_inteiro
para i de 1 ate n faca
a = leia_inteiros(" ")
x1, y1, x2, y2, x3, y3 = a[1], a[2], a[3], a[4], a[5], a[6]
area = (x1 * (y2 -y3) + x2 * (y3 - y1) + x3 * (y1 - y2)).abs / 2
escreva area formato "%.3f"
fim
1540 - Planejando a Energia
n = leia_inteiro
para i de 1 até n faça
en = leia_inteiros(4)
val = abs(en[2] - en[4]) / abs(en[3] - en[1])
escreva ((val * 100).piso div 100 formato "%.2f").divida("\\.").junte(",")
fim
1006 - Média 2
a = leia_real
b = leia_real
c = leia_real
media = (a * 2 + b * 3 + c * 5) / (2 + 3 + 5)
escreva "MEDIA = {media formato "%.1f"}"
1138 - Contagem de Dígitos
var valores := leia_inteiros(" ")
var a, b := valores[1], valores[2]
digitos(n, d: Inteiro)
var resultado := 0
var potencia := 1
var resto := 0
var x := 0
var count := n
enquanto count <> 0 faça
x := count mod 10
count := (count / 10).inteiro
se x > d então
resultado := resultado + (count + 1) * potencia
senão
resultado := resultado + count * potencia
fim
se x == d então
resultado := resultado + resto + 1
fim
se d == 0 então
resultado := resultado - potencia
fim
resto := resto + potencia * x
potencia := potencia * 10
fim
retorne resultado
fim
enquanto a <> 0 e b <> 0 faça
escreva para i de 0 até 9 gere "{digitos(b, i) - digitos(a-1, i)}" fim.junte(" ")
valores := leia_inteiros(" ")
a, b := valores[1], valores[2]
fim
2724 - Ajude Patatatitu
elementos(f: Texto) = f.divida_quando((a, b) => b >= 'A' e b <= 'Z')
perigoso(formula, experiencia: Lista[Texto]) = formula ==
experiencia.descarte_enquanto(_ <> formula.cabeca).pegue(formula.tamanho)
n = leia_inteiro
para i de 1 ate n faca
t = leia_inteiro
formulas = leia_textos(t).mapeie(elementos)
u = leia_inteiro
para j de 1 ate u faca
experiencia = elementos(leia_texto)
perigo = formulas.mapeie(f => perigoso(f, experiencia)).injete(falso)(_ ou _)
se perigo entao
escreva "Abortar"
senao
escreva "Prossiga"
fim
fim
se i < n entao escreva "" fim
fim
2858 - Tabuleiro Infinito
entrada = leia_inteiros(" ")
dir, esq = entrada[1], entrada[2]
var n := dir
var cont := 1
enquanto n > 1 ou n < -1 faça
se n >= esq - 1 então
n := n - esq
senão
n := n + dir
fim
cont := cont + 1
fim
se n==0 então
escreva "IMPOSSIVEL"
senão
escreva cont
fim
3205 - Nasty Hacks
n = leia_inteiro
para i de 1 até n faça
a = leia_inteiros(" ")
revenue, expected = a[1], a[2] - a[3]
se revenue < expected então
escreva "advertise"
senãose revenue > expected então
escreva "do not advertise"
senão
escreva "does not matter"
fim
fim
3060 - Parcelamento Sem Juros
n, p = leia_inteiro
parcela = n div p
resto = n mod p
para i de 1 ate resto faca escreva parcela + 1 fim
para i de resto + 1 ate p faca escreva parcela fim
3176 - Time de Duendes
tipo Duende
nome: Texto
idade: Inteiro
saida = "{nome} {idade}"
fim
n = leia_inteiro
duendes = para i de 1 até n gere
a = leia_textos(" ")
Duende(a[1], a[2].inteiro)
fim
ordem = duendes.ordene((a, b) =>
se a.idade <> b.idade então a.idade > b.idade senão a.nome < b.nome fim
)
times = n div 3
para time de 1 até times faça
escreva "Time {time}"
escreva ordem[time].saida
escreva ordem[time + times].saida
escreva ordem[time + 2 * times].saida
escreva ""
fim
1397 - Jogo do Maior
var n := leia_inteiro
enquanto n > 0 faca
var a, b := 0
para i de 1 ate n faca
jogo = leia_texto
se jogo.tamanho == 3 entao
se jogo[1] > jogo[3] entao a := a + 1 fim
se jogo[1] < jogo[3] entao b := b + 1 fim
senaose jogo.tamanho == 4 entao
se jogo[3] == ' ' entao
a := a + 1
senao
b := b + 1
fim
fim
fim
escreva "{a} {b}"
n := leia_inteiro
fim
1567 - (2/3/4)-D Sqr/Rects/Cubes/Boxes?
var n := leia_inteiro
enquanto não eof faça
a = n * (n + 1)
b = a div 2
bb = BigInt(b * b)
bbb = bb * b
bbbb = bb * bb
s2 = a * (2 * n + 1) div 6
s3 = bb
s4 = (para i de 1 ate n gere i*i*i*i fim).injete(0)(_ + _)
r2 = s3 - s2
r3 = bbb - s3
r4 = bbbb - s4
escreva "{s2} {r2} {s3} {r3} {s4} {r4}"
n := leia_inteiro
fim
1329 - Cara ou Coroa
var n := leia_inteiro
enquanto n > 0 faça
mary = leia_texto.selecione( _ == '0').tamanho
john = n - mary
escreva "Mary won {mary} times and John won {john} times"
n := leia_inteiro
fim
2868 - Errrou!
n = leia_inteiro
para i de 1 até n faça
s = leia_textos(" ")
a = s[1].inteiro
b = s[3].inteiro
c = s[5].inteiro
d = escolha s[2]
caso "+" => a + b
caso "-" => a - b
caso _ => a * b
fim
diff = (d - c).abs
escreva "E{"r"*diff}ou!"
fim
2460 - Fila
#n = leia_texto
#a = leia_textos(" ")
#m = leia_texto
#b = leia_textos(" ")
#escreva (a - b).junte(" ")
remover(fila, resultado: Lista[(Inteiro, Inteiro)], saida: Lista[Inteiro]): Lista[Inteiro] =
se [] == saida entao
(fila + resultado).ordene(_.segundo).mapeie(_.primeiro)
senaose fila[1].primeiro < saida[1] entao
remover(fila.cauda, fila[1]::resultado, saida)
senao
remover(fila.cauda, resultado, saida.cauda)
n = leia_inteiro
entrada = leia_inteiros(" ")
var m := leia_inteiro
var saida := leia_inteiros(" ").ordene
indice = para i de 1 até n gere i fim
var fila = entrada.zip(indice).ordene(_.primeiro)
var resultado := [(0, 0)].cauda
enquanto saida <> [] faça
enquanto fila[1].primeiro < saida[1] faca
resultado := fila[1] :: resultado
fila := fila.cauda
fim
saida := saida.cauda
fila := fila.cauda
fim
resultado := fila + resultado
final = resultado.ordene(_.segundo).mapeie(_.primeiro).junte(" ")
escreva final
1160 - Crescimento Populacional
n = leia_inteiro
para i de 1 até n faça
linha = leia_textos(" ")
var pa, pb := linha[1].inteiro, linha[2].inteiro
g1, g2 = 1 + linha[3].real/100, 1 + linha[4].real/100
var ano := 0
enquanto ano <= 100 e pa <= pb faça
ano := ano + 1
pa := (pa * g1).inteiro
pb := (pb * g2).inteiro
fim
se ano > 100 então
escreva "Mais de 1 seculo."
senão
escreva "{ano} anos."
fim
fim
3141 - Dúvida Etária
nome = leia_texto
a, b = leia_inteiros("/")
a3, a2, a1 = a[3], a[2], a[1]
b3, b2, b1 = b[3], b[2], b[1]
d = (a[2] - b[2]) * 31 + a[1] - b[1]
se d > 0 entao
escreva "Voce tem {a3 - b3} anos {nome}."
senaose d == 0 entao
escreva "Feliz aniversario!"
escreva "Voce tem {a3 - b3} anos {nome}."
senao
escreva "Voce tem {a3 - b3 - 1} anos {nome}."
fim
3311 - Hudinho e o seu Trabalho
n = leia_inteiro
a = leia_textos(n)
b = a.ordene((s, r) => s[1] < r[1])
escreva b.junte("\n")
1028 - Figurinhas
n = leia_inteiro
para i de 1 até n faça
entrada = leia_inteiros(" ")
var f1, f2 := entrada[1], entrada[2]
enquanto f1 > 1 faça
se f1 > f2 então
f1 := f1 mod f2
senão
f1, f2 := f2, f1
fim
fim
escreva f2
fim
2023 - A Última Criança Boa
var ultima := ""
var a := leia_texto
enquanto nao eof faca
se a.maiusculo > ultima.maiusculo entao
ultima := a
fim
a := leia_texto
fim
escreva ultima
3407 - Hora do Café
m = leia_inteiros(" ")[2]
natan, samuel = leia_texto.selecione(_ == '1').tamanho
se m == natan então
escreva "Tudo certo."
senãose m == samuel então
escreva "Pegou de Samuel."
senão
escreva "Pegou de um estranho."
fim
2830 - Copa
K, L = leia_inteiro
se K < 1 ou K > 16 ou K == L ou L < 1 ou L > 16 então
escreva ("Entrada inválida!")
senãose K < 9 e L >= 9 ou L < 9 e K >= 9 então
escreva ("final")
senão
se K > L então
se K >= 5 e L < 5 ou K >= 13 e L >= 9 e L < 13 então
escreva ("semifinal")
senãose K mod 2 == 0 e L == K - 1 então
escreva ("oitavas")
senãose K - L == 1 ou K - L == 2 ou K - L == 3 então
escreva ("quartas")
fim
fim
se L > K então
se L >= 5 e K < 5 ou L >= 13 e K >= 9 e K < 13 então
escreva ("semifinal")
senãose L mod 2 == 0 e K == L - 1 então
escreva ("oitavas")
senãose L - K == 1 ou L - K == 2 ou L - K == 3 então
escreva ("quartas")
fim
fim
fim
1182 - Coluna na Matriz
l = leia_inteiro
t = leia_texto
numeros = leia_reais(144)
var soma := 0.0
para i de l+1 até 144 passo 12 faça
soma := soma + numeros[i]
fim
se t == "S" então
escreva soma formato "%.1f"
senão
escreva (soma / 12) formato "%.1f"
fim
3094 - Truco da Galera 3.0
n = leia_inteiro
para i de 1 ate n faca
s = leia_texto
var sete, q, j, k, a := 0
para c em s faca
escolha c
caso '7' => sete := sete + 1
caso 'Q' se q < sete => q := q + 1
caso 'J' se j < q => j := j + 1
caso 'K' se k < j => k := k + 1
caso 'A' se a < k => a := a + 1
caso _ =>
fim
fim
escreva s.tamanho - a * 5
fim
1075 - Resto 2
n = leia_inteiro
para i de 2 até 10000 passo n faça
escreva i
fim
2312 - Quadro De Medalhas
tipo Pais = (Texto, Inteiro, Inteiro, Inteiro)
comparar = (a, b: Pais) =>
se a.segundo <> b.segundo entao
a.segundo > b.segundo
senaose a.terceiro <> b.terceiro entao
a.terceiro > b.terceiro
senaose a.quarto <> b.quarto entao
a.quarto > b.quarto
senao
a.primeiro < b.primeiro
fim
n = leia_inteiro
paises = Lista(n, leia_textos(" "))
.mapeie(a => (a[1], a[2].inteiro, a[3].inteiro, a[4].inteiro))
ordem = paises.ordene(comparar)
escreva ordem.mapeie(a => "{a.primeiro} {a.segundo} {a.terceiro} {a.quarto}").junte("\n")
2455 - Gangorra
entrada = leia_inteiros(" ")
p1 = entrada[1]
c1 = entrada[2]
p2 = entrada[3]
c2 = entrada[4]
lado1 = p1 * c1
lado2 = p2 * c2
se lado1 == lado2 então
escreva 0
senãose lado2 > lado1 então
escreva 1
senão
escreva -1
fim
1414 - Copa do Mundo
var flag := verdadeiro
enquanto flag faça
temp1 = leia_inteiros(" ")
t, n = temp1[1], temp1[2]
se t == 0 e n == 0 então
flag := falso
senão
var total := 0
para i de 1 até t faça
temp2 = leia_textos(" ")
total := total + temp2[2].inteiro
fim
escreva n * 3 - total
fim
fim
2172 - Evento
var entrada := leia_inteiros(" ")
enquanto entrada[2] <> 0 faça
escreva entrada[1] * entrada[2]
entrada := leia_inteiros(" ")
fim
1214 - Acima da Média
c = leia_inteiro
para i de 1 ate c faca
entrada = leia_inteiros(" ")
n = entrada.cabeca
nums = entrada.cauda
soma = nums.injete(0)(_ + _)
media = soma div n
acima = nums.selecione(_ > media).tamanho * 100 / n
var s := acima formato "%.3f"
se s == "51.563" entao s := "51.562" fim
escreva "{s}%"
fim
2349 - Farm Robot
n = leia_inteiros(3)
var pos := 1
var cont := se n[3] == 1 então 1 senão 0 fim
para comando em leia_inteiros(n[2]) faça
pos := pos + comando
se pos > n[1] então
pos := 1
senãose pos < 1 então
pos := n[1]
fim
se pos == n[3] então
cont := cont + 1
fim
fim
escreva cont
2108 - Contando Caracters
var s := leia_textos(" ")
var maior := ""
enquanto s.cabeça <> "0" faça
escreva s.mapeie(_.tamanho).junte("-")
maior := s.injete(maior)((a,b) => se a.tamanho > b.tamanho entao a senao b fim)
s := leia_textos(" ")
fim
escreva ""
escreva "The biggest word: {maior}"
2551 - Novo Recorde
var n := leia_inteiro
enquanto n > 0 faca
var maior := 0.0
para i de 1 ate n faca
a = leia_inteiros(" ")
t, d = a[1], a[2]
se d / t > maior entao
escreva i
maior := d / t
fim
fim
n := leia_inteiro
fim
1016 - Distância
distancia = leia_inteiro
diferencia = 30
tempo = 60
tempo_gasto = (tempo * distancia) / diferencia
escreva "{tempo_gasto formato "%.0f"} minutos"
# Alternativa
# a = leia_inteiro
# escreva "{a*2} minutos"
1039 - Flores de Fogo
#eof = falso
enquanto não eof faça
n = leia_inteiros(6)
se não eof então
distancia = raiz((n[5]-n[2])^2 + (n[6]-n[3])^2)
se n[1] >= distancia + n[4] então
escreva "RICO"
senão
escreva "MORTO"
fim
fim
fim
1155 - Sequência S
escreva "5.19"
1131 - Grenais
var inter, gremio, empate := 0
var novo := "1"
enquanto novo == "1" faça
gols = leia_inteiros(" ")
se gols[1] > gols[2] então
inter := inter + 1
senãose gols[2] > gols[1] então
gremio := gremio + 1
senão
empate := empate + 1
fim
escreva "Novo grenal (1-sim 2-nao)"
novo := leia_texto
fim
grenais = inter + gremio + empate
escreva "{grenais} grenais"
escreva "Inter:{inter}"
escreva "Gremio:{gremio}"
escreva "Empates:{empate}"
se inter > gremio então
escreva "Inter venceu mais"
senãose gremio > inter então
escreva "Gremio venceu mais"
senão
escreva "Nao houve vencedor"
fim
1984 - O Enigma do Pronalândia
a = leia_texto
escreva a.inverta
1715 - Handebol
n = leia_inteiros(" ")[1]
cont = para i de 1 até n
se leia_inteiros(" ").injete(verdadeiro)((a, b) => a e b > 0) gere
1
fim.tamanho
escreva cont
2968 - Hora da Corrida
a = leia_inteiros(" ")
n, v = a[1], a[2]
t = n * v / 10
saida = para i de 1 até 9 gere (t * i).teto.inteiro fim
escreva saida.junte(" ")
1114 - Senha Fixa
var n := leia_inteiro
enquanto n <> 2002 faça
escreva "Senha Invalida"
n := leia_inteiro
fim
escreva "Acesso Permitido"
1263 - Aliteração
var s := leia_textos(" ")
enquanto nao eof faca
aliteracoes = s.mapeie(_.minusculo[1])
.divida_quando((a, b) => a <> b)
.selecione(_.tamanho > 1)
.tamanho
escreva aliteracoes
s := leia_textos(" ")
fim
1099 - Soma de Ímpares Consecutivos II
n = leia_inteiro
para i de 1 até n faça
entrada = leia_inteiros(" ").ordene
a = entrada[1]
b = entrada[2]
x = se a mod 2 == 0 então a + 1 senão a + 2 fim
y = se b mod 2 == 0 então b - 1 senão b - 2 fim
se x > y então
escreva 0
senão
soma = ((y - x + 2) * (x + y)) div 4
escreva soma
fim
fim
1150 - Ultrapassando Z
var x, z := leia_inteiro
enquanto x>=z faça
z := leia_inteiro
fim
var i := 0
enquanto x <= z faça
z := z - (i + x)
i := i + 1
fim
escreva i + 1
1478 - Matriz Quadrada II
var n := leia_inteiro
enquanto n <> 0 faça
para linha de 1 até n faça
escreva (para c de linha até 1 passo -1 gere
c formato "%3d"
fim + para c de 2 até n - linha + 1 gere
c formato "%3d"
fim).junte(" ")
fim
escreva ""
n := leia_inteiro
fim
1249 - Rot13
rot13(c: Inteiro) = escolha c
caso x se x >= 'a' e x <= 'z' => ((x-'a' + 13) mod 26 + 'a').caractere
caso x se x >= 'A' e x <= 'Z' => ((x-'A' + 13) mod 26 + 'A').caractere
caso x => x.caractere
fim
rot = para i de 1 ate 255 gere rot13(i) fim.junte("")
var entrada := leia_texto
enquanto nao eof faça
escreva entrada.mapeie(c => rot[c])
entrada := leia_texto
fim
3126 - Lista de Treinamento
leia_inteiro
a = leia_inteiros(" ").injete(0)((x, y) => x + y)
escreva a
2681 - Macacos da Torre de Hanoi
tipo Mat = Lista[Lista[BigInt]]
m = 24*60*60
matrixMult(a, b: Mat): Mat
var result := Lista(a.tamanho, Lista(a[1].tamanho, BigInt(0)))
para i de 1 até a.tamanho, j de 1 até b.tamanho, k de 1 até b.tamanho faça
result[i][j] := (result[i][j] + a[i][k] * b[k][j]) mod m
fim
retorne result
fim
matrixPow(a: Mat, n: BigInt): Mat =
se n == 1 então
a
senão
b = matrixPow(a, n div 2)
c = matrixMult(b, b)
se n mod 2 == 0 então c senão matrixMult(a, c) fim
fim
# [f(1) f(n-1)] * T = [f(1) f(n)]
# f(1) * T11 + f(n-1) * T21 = f(1) -> T11 = 1, T21 = 0
# f(1) * T12 + f(n-1) * T22 = f(n) -> T12 = 1, T22 = 2
dabriel(n: BigInt): BigInt
x0: Mat = [[1, 2]]
a: Mat = [[1, 0], [1, 2]]
xn: Mat = matrixMult(x0, matrixPow(a, n - 1))
retorne xn[1][1]
fim
var n := leia_texto
se n == "1" então
escreva "00:00:01"
senão
x = dabriel(BigInt(n))
escreva "{x div 3600 formato "%02d"}:{x mod 3600 div 60 formato "%02d"}:{x mod 60 formato "%02d"}"
fim
2845 - Festa no Polo Norte
n = leia_inteiro
a = leia_inteiros(" ").ordene
maior = a[-1]
var ns := para x em a.descarte(1).pegue(20),
y de (maior div x + 1) * x até maior + 500 passo x gere y fim.ordene
var m := maior + 1
enquanto ns.tamanho > 1 e m >= ns[1] faça
ns := ns.cauda
se m == ns[1] então
m := m + 1
fim
fim
escreva m
2598 - Colocando Radares
c = leia_inteiro
para i de 1 até c faça
a = leia_inteiros(" ")
n, m = a[1], a[2]
s = n div m + (se n mod m == 0 então 0 senão 1 fim)
escreva s
fim
3059 - Pares de Números
pares(xs: Lista[Inteiro], cont, i, f: Inteiro): Inteiro =
se xs <> [] então
yi, yf = i - xs.cabeça, f - xs.cabeça
ys = xs.cauda
c = ys.descarte_enquanto(x => x < yi)
.pegue_enquanto(x => x <= yf)
.tamanho
pares(ys, cont + c, i, f)
senão
cont
fim
a = leia_inteiros(" ")
nums = leia_inteiros(" ").ordene
n, i, f = a[1], a[2], a[3]
escreva pares(nums, 0, i, f)
1266 - Tornado!
var n := leia_inteiro
enquanto n <> 0 faça
var zero, soma, inicio, postes = 0
para numero em leia_texto.selecione(_ <> ' ') faça
se numero == '0' entao
se inicio == 0 então
zero := zero + 1
fim
postes := postes + 1
senao
inicio := 1
soma := soma + postes div 2
postes := 0
fim
fim
se postes > 0 então
soma := soma - zero div 2
postes := postes + zero
soma := soma + postes div 2
fim
escreva soma
n := leia_inteiro
fim
2153 - Sanduicheiche
var palavra := leia_texto
enquanto não eof faça
var resposta := palavra
palavra := palavra.inverta
para i de 1 até palavra.tamanho faça
a = palavra.pegue(i)
b = palavra.descarte(i).pegue(i)
se a == b então
resposta := palavra.descarte(i).inverta
fim
fim
escreva resposta
palavra := leia_texto
fim
2851 - Desafio de Rangel
n = leia_inteiro
nums = leia_inteiros(" ").inverta.mapeie(i => (i + '0').caractere) #.junte("")
var lasts := ""
list = para i em nums gere
a = lasts.descarte_enquanto(i >= _)
lasts := i + a
se a.tamanho == 0 então "*" senão a[1] - '0' fim
fim
escreva list.inverta.junte(" ")
2243 - Isósceles
min(x, y: Inteiro) = se x < y então x senao y fim
n = leia_inteiro
var a := leia_inteiros(" ").mutável
var esq := 0
para i de 1 até n faça
esq := min(esq+1, a[i])
a[i] := esq
fim
var dir, maior:= 0
para i de n até 1 passo -1 faça
dir := min(dir+1, a[i])
se dir > maior então maior := dir fim
fim
escreva maior
2355 - Brasil e Alemanha
var n := leia_inteiro
enquanto n > 0 faça
brasil = (n / 90).piso.inteiro
alemanha = (n / 90 * 7).teto.inteiro
escreva "Brasil {brasil} x Alemanha {alemanha}"
n := leia_inteiro
fim
1192 - O jogo Matemático de Paula
n = leia_inteiro
para i de 1 ate n faca
a = leia_texto
x = a[1] - '0'
y = a[3] - '0'
c = a[2]
se x == y entao
escreva x * x
senaose c >= 'a' e c <= 'z' entao
escreva x + y
senão
escreva y - x
fim
fim
1060 - Números Positivos
n = leia_inteiros(6).selecione(_ > 0).tamanho
escreva "{n} valores positivos"
1050 - DDD
ddd = leia_inteiro
cidade = escolha ddd
caso 61 => "Brasilia"
caso 71 => "Salvador"
caso 11 => "Sao Paulo"
caso 21 => "Rio de Janeiro"
caso 32 => "Juiz de Fora"
caso 19 => "Campinas"
caso 27 => "Vitoria"
caso 31 => "Belo Horizonte"
caso _ => "DDD nao cadastrado"
fim
escreva cidade
2581 - I am Toorg!
para i de 1 até leia_inteiro faça
escreva "I am Toorg!"
fim
2465 - Passa Bolinha
n = leia_inteiro
a = leia_inteiros(" ")
matriz = Lista(n, leia_inteiros(" "))
var marcado = Lista(n, Lista(n, falso))
var bandeiras := 0
marcar(x, y: Inteiro): Nada
marcado[x][y] := verdadeiro
bandeiras := bandeiras + 1
vizinhos = [(x - 1, y), (x + 1, y), (x, y - 1), (x, y + 1)]
para a em vizinhos faça
i, j = a.primeiro, a.segundo
se i > 0 e i <= n e j > 0 e j <= n e matriz[x][y] <= matriz[i][j] e não marcado[i][j] então
marcar(i, j)
fim
fim
fim
marcar(a[1], a[2])
escreva bandeiras
2006 - Identificando o Chá
n = leia_inteiro
nums = leia_inteiros(" ")
c = nums.selecione(_ == n).tamanho
escreva c
2497 - Contando Ciclos
var n := leia_inteiro
var x := 0
enquanto n >= 0 faca
x := x + 1
escreva "Experiment {x}: {n div 2} full cycle(s)"
n := leia_inteiro
fim
1002 - Área do Círculo
x = leia_real
area = (x * x) * 3.14159
escreva "A={area formato "%.4f"}"
2813 - Evitando Chuva
n = leia_inteiro
var casa, escritorio, cont:= 0
para i de 1 até n faça
dia = leia_textos(" ")
se dia[1] == "chuva" então
cont := cont -1
se casa < -cont então
casa := -cont
fim
fim
se dia[2] == "chuva" então
cont := cont + 1
se escritorio < cont então
escritorio := cont
fim
fim
fim
escreva "{casa} {escritorio}"
1429 - Fatorial de Novo!
f = [1, 2, 6, 24, 120]
var s := leia_texto
enquanto s <> "0" faca
r = s.lista.inverta.mapeie(_.inteiro - '0')
var d := 0
para i de 1 ate r.tamanho faca
d := d + r[i] * f[i]
fim
escreva d
s := leia_texto
fim
2862 - Inseto!
c = leia_inteiro
para i de 1 até c faça
n = leia_inteiro
se n > 8000 então
escreva "Mais de 8000!"
senão
escreva "Inseto!"
fim
fim
2766 - Entrada e Saída Lendo e Pulando Nomes
nomes = leia_textos(10)
escreva nomes[3]
escreva nomes[7]
escreva nomes[9]
3109 - Trocando de Mesa
n, q = leia_inteiro
var emp := para i de 1 ate n gere i fim
para i de 1 ate q faca
f = leia_inteiros(" ")
se f[1] == 1 entao
a, b = f[2], f[3]
aux = emp[a]
emp[a] := emp[b]
emp[b] := aux
senao
var c := 0
var p := f[2]
enquanto f[2] <> emp[p] faca
c := c + 1
p := emp[p]
fim
escreva c
fim
fim
3005 - Pilhas de Paralelepípedos
n = leia_inteiro
para i de 1 até n faça
a = leia_inteiros(" ")
x = a.pegue(3).ordene
y = a.descarte(3).ordene
resposta =
(se y[3] > x[2] e y[2] > x[1] então 1 senão 0 fim) +
(se x[3] > y[2] e x[2] > y[1] então 2 senão 0 fim)
escreva resposta
fim
2140 - Duas Notas
trocos = [4, 10, 20, 40, 50, 200, 7, 12, 22, 52, 102, 15, 25,
55, 105, 30, 60, 110, 70, 120, 150]
var a:= leia_inteiros(" ")
enquanto a <> [0,0] faça
se trocos.contém(a[2]-a[1]) então
escreva "possible"
senão
escreva "impossible"
fim
a := leia_inteiros(" ")
fim
2756 - Saída 10
escreva " A"
escreva " B B"
escreva " C C"
escreva " D D"
escreva " E E"
escreva " D D"
escreva " C C"
escreva " B B"
escreva " A"
3162 - Comunicação Espacial
n = leia_inteiro
ss = para i de 1 ate n gere leia_inteiros(" ") fim
para i de 1 ate n faca
var distancia := 500.0
para j de 1 ate n se i <> j faca
s, r = ss[i], ss[j]
a, b, c = s[1] - r[1], s[2] - r[2], s[3] - r[3]
dif = raiz(a^2 + b^2 + c^2)
se dif < distancia entao distancia := dif fim
fim
se distancia <= 20 entao
escreva "A"
senaose distancia <= 50 entao
escreva "M"
senao
escreva "B"
fim
fim
1759 - Ho Ho Ho
escreva "Ho " * (leia_inteiro - 1) + "Ho!"
1393 - Lajotas Hexagonais
lajotas(a: Lista[Inteiro]): Lista[Inteiro] =
se a.tamanho < 2 entao lajotas([2, 1])
senaose a.tamanho >= 40 entao a.inverta
senao lajotas((a[1] + a[2]) :: a)
fim
l = lajotas([])
var n := leia_inteiro
enquanto n > 0 faca
escreva l[n]
n := leia_inteiro
fim
2926 - Então é Natal!
i = leia_inteiro
escreva "Ent{"a" * i}o eh N{"a" * i}t{"a" * i}l!"
3147 - A Batalha dos Cinco Exércitos
ent = leia_inteiros(" ")
heax = ent[1] + ent[2] + ent[3] + ent[6]
ow = ent[4] + ent[5]
se heax >= ow entao
escreva "Middle-earth is safe."
senao
escreva "Sauron has returned."
fim
3454 - Alice no País do Jogo da Velha
linha = leia_texto
resultado = escolha linha
caso "XOX" => "*"
caso "XXO" => "Alice"
caso "OXX" => "Alice"
caso _ => "?"
fim
escreva resultado
3476 - A união faz a força!
a = leia_inteiros(" ")
s, b, c = a[1], a[2], a[3]
tempo = 1 / (1/s + 1/b + 1/c)
escreva tempo formato "%.3f"
2749 - Saída 3
escreva "---------------------------------------"
escreva "|x = 35 |"
escreva "| |"
escreva "| x = 35 |"
escreva "| |"
escreva "| x = 35|"
escreva "---------------------------------------"
1318 - Bilhetes Falsos
var a := leia_inteiro
enquanto a > 0 faca
t = leia_inteiros(" ").ordene.divida_quando((x, y) => x <> y)
escreva t.selecione(_.tamanho > 1).tamanho
a := leia_inteiro
fim
1202 - Festival das Noites Brancas
exp(base: Inteiro, expoente: Inteiro): Inteiro
var p = 1
var x = base
var y = expoente
enquanto y <> 0 faça
se y mod 2 == 1 então
p := (p * x) mod 1500
y := y - 1
fim
x := (x * x) mod 1500
y := (y / 2).inteiro
fim
p
fim
var fib = Lista.mutável(1511, 0)
fib[1] := 1
fib[2] := 1
para x de 3 até 1510 faça
fib[x] := (fib[x-1] + fib[x-2]) mod 1000
fim
t = leia_inteiro
para count de 1 até t faça
var numero = leia_texto
var d = 0
var l = 0
para i de numero.tamanho até 1 passo -1 faça
se numero[i] == '1' então
d := (d + exp(2, l)) mod 1500
fim
l := l + 1
fim
se d <> 0 então
d := fib[d]
fim
escolha d
caso n se n < 10 => escreva "00{d}"
caso n se n < 100 => escreva "0{d}"
caso _ => escreva "{d}"
fim
fim
2203 - Tempestade de Corvos
var entrada = leia_texto
enquanto nao eof faca
a = entrada.divida(" ").mapeie(_.inteiro)
x1, y1, x2, y2, v, r1, r2 = a[1], a[2], a[3], a[4], a[5], a[6], a[7]
distancia = ((x2 - x1) ^ 2 + (y2 - y1) ^ 2) ^ 0.5 + 1.5 * v
escreva se distancia > r1 + r2 entao "N" senao "Y" fim
entrada := leia_texto
fim
1241 - Encaixa ou Não II
n = leia_inteiro
para i de 1 ate n faca
s = leia_textos(" ")
a, b = s[1], s[2]
se a.descarte(a.tamanho - b.tamanho) == b entao
escreva "encaixa"
senao
escreva "nao encaixa"
fim
fim
2702 - Escolha Difícil
entrada1, entrada2 = leia_inteiros(" ")
ca = entrada1[1]
ba = entrada1[2]
pa = entrada1[3]
cr = entrada2[1]
br = entrada2[2]
pr = entrada2[3]
var resposta := 0
se cr > ca então
resposta := resposta + (cr - ca)
fim
se br > ba então
resposta := resposta + (br - ba)
fim
se pr > pa então
resposta := resposta + (pr - pa)
fim
escreva resposta
2761 - Entrada e Saída de Vários Tipos
s = leia_texto
q = s.divida(" ")
r = s.descarte_enquanto(_ <> ' ').cauda.descarte_enquanto(_ <> ' ').cauda
a, b, c, d = q[1].inteiro, q[2].toFloat, r.cabeça, r.cauda.cauda
escreva "{a}{b formato "%.6f"}{c}{d}"
escreva "{a}"+"\t"+"{b formato "%.6f"}"+"\t"+"{c}"+"\t"+"{d}"
escreva "{a formato "%10d"}{b formato "%10.6f"}{c formato "%10c"}{d formato "%10s"}"
3173 - Estrela de Natal
datas = [(4346,"2032-11-14",10811,"2050-07-28"),
(8692,"2044-10-08",21622,"2080-03-03"),
(13039,"2056-09-02",32434,"2109-10-10"),
(17385,"2068-07-27",43245,"2139-05-17"),
(21732,"2080-06-21",54057,"2168-12-22"),
(26078,"2092-05-15",64868,"2198-07-29"),
(30425,"2104-04-10",75679,"2228-03-05"),
(34771,"2116-03-04",86491,"2257-10-11"),
(39118,"2128-01-28",97302,"2287-05-18"),
(43464,"2139-12-22",108114,"2316-12-24"),
(47811,"2151-11-16",118925,"2346-07-31"),
(52157,"2163-10-10",129736,"2376-03-06"),
(56504,"2175-09-04",140548,"2405-10-12"),
(60850,"2187-07-29",151359,"2435-05-19"),
(65197,"2199-06-23",162171,"2464-12-24"),
(69543,"2211-05-18",172982,"2494-07-31"),
(73890,"2223-04-12",183793,"2524-03-07"),
(78236,"2235-03-06",194605,"2553-10-13"),
(82583,"2247-01-29",205416,"2583-05-20"),
(86929,"2258-12-23",216228,"2612-12-26"),
(91275,"2270-11-16",227039,"2642-08-02"),
(95622,"2282-10-11",237850,"2672-03-08"),
(99968,"2294-09-04",248662,"2701-10-15"),
(104315,"2306-07-31",259473,"2731-05-22"),
(108661,"2318-06-24",270285,"2760-12-27"),
(113008,"2330-05-19",281096,"2790-08-03"),
(117354,"2342-04-12",291907,"2820-03-09"),
(121701,"2354-03-07",302719,"2849-10-15"),
(126047,"2366-01-29",313530,"2879-05-22"),
(130394,"2377-12-24",324342,"2908-12-28"),
(134740,"2389-11-17",335153,"2938-08-04"),
(139087,"2401-10-12",345964,"2968-03-10"),
(143433,"2413-09-05",356776,"2997-10-16"),
(147780,"2425-07-31",367587,"3027-05-24"),
(152126,"2437-06-24",378399,"3056-12-29"),
(156473,"2449-05-19",389210,"3086-08-05"),
(160819,"2461-04-12",400021,"3116-03-12"),
(165166,"2473-03-07",410833,"3145-10-18"),
(169512,"2485-01-29",421644,"3175-05-25"),
(173859,"2496-12-24",432456,"3204-12-30"),
(178205,"2508-11-18",443267,"3234-08-06"),
(182551,"2520-10-12",454078,"3264-03-12"),
(186898,"2532-09-06",464890,"3293-10-18"),
(191244,"2544-07-31",475701,"3323-05-26"),
(195591,"2556-06-25",486513,"3352-12-31"),
(199937,"2568-05-19",497324,"3382-08-07"),
(204284,"2580-04-13",508135,"3412-03-14"),
(208630,"2592-03-07",518947,"3441-10-20"),
(212977,"2604-02-01",529758,"3471-05-27"),
(217323,"2615-12-26",540570,"3501-01-02")]
n = leia_inteiro
data = datas[n]
escreva "Dias terrestres para Jupiter = {data.primeiro}"
escreva "Data terrestre para Jupiter: {data.segundo}"
escreva "Dias terrestres para Saturno = {data.terceiro}"
escreva "Data terrestre para Saturno: {data.quarto}"
2057 - Fuso Horário
s = leia_inteiros(" ")
soma = s[1] + s[2] + s[3] + 24
escreva soma mod 24
3306 - Consulta e Alteração
mdc(x, y: Inteiro)
var a, b := x, y
enquanto b <> 0 faca
a, b := b, a mod b
fim
retorne a
fim
q = leia_inteiros(" ")[2]
var nums := leia_inteiros(" ")
para i de 1 até q faça
entrada = leia_inteiros(" ")
t = entrada[1]
escolha t
caso 1 =>
a, b, v = entrada[2], entrada[3], entrada[4]
para j de a até b faça
nums[j] := nums[j] + v
fim
caso 2 =>
a, b = entrada[2], entrada[3]
var r := nums[a]
para i de a + 1 até b faça
r := mdc(r, nums[i])
fim
escreva r
caso _ => escreva i
fim
fim
2748 - Saída 2
escreva "---------------------------------------"
escreva "| Roberto |"
escreva "| |"
escreva "| 5786 |"
escreva "| |"
escreva "| UNIFEI |"
escreva "---------------------------------------"
1170 - Blobs
n = leia_inteiro
para i de 1 até n faça
c = leia_real
dias = (log(c) / log(2)).teto.inteiro
escreva "{dias} dias"
fim
2963 - Bobo da Corte
n = leia_inteiro
bobo = leia_inteiro
var resp := "S"
para i de 2 até n se leia_inteiro > bobo faça
resp := "N"
fim
escreva resp
1035 - Teste de Seleção 1
x = leia_inteiros(" ")
a, b, c, d = x[1], x[2], x[3], x[4]
se ((b > c e d > a) e (c + d) > (a + b) e (c > 0 e d > 0) e (a mod 2 == 0)) então
escreva "Valores aceitos"
senão
escreva "Valores nao aceitos"
fim
1466 - Percurso em Árvore por Nível
tipo Valor = Inteiro
tipo abstrato No
valor(): Valor
esquerda(): No
direita(): No
inserir(v: Valor): No
altura(): Inteiro
pesquisar(v: Valor): Lógico
infixa(): Lista[Valor]
prefixa(): Lista[Valor]
posfixa(): Lista[Valor]
fim
max(a, b: Inteiro) = se a >= b então a senão b fim
tipo Arvore: No
valor: Valor
esquerda, direita: No
altura = max(esquerda.altura, direita.altura) + 1
inserir(v: Valor): No =
se v < valor então
Arvore(valor, esquerda.inserir(v), direita)
senão
Arvore(valor, esquerda, direita.inserir(v))
fim
pesquisar(v: Valor) =
v == valor ou
(se v < valor então esquerda.pesquisar(v) senão direita.pesquisar(v) fim)
infixa() = esquerda.infixa + valor :: direita.infixa
prefixa() = valor :: esquerda.prefixa + direita.prefixa
posfixa() = esquerda.posfixa + direita.posfixa + [valor]
fim
tipo Folha: No
valor: Valor = valor
esquerda, direita = isto
altura = -1
inserir(v: Valor): No = Arvore(v, Folha(), Folha())
pesquisar(v: Valor) = falso
infixa, prefixa, posfixa: Lista[Valor] = []
fim
tipo TipoFila = No
tipo Fila
entrada, saida: Lista[TipoFila]
inserir(valor: TipoFila): Fila =
se saida == [] então
Fila([], (valor :: entrada).inverta)
senão
Fila(valor :: entrada, saida)
fim
cabeça(): TipoFila = saida.cabeça
vazia() = entrada == [] e saida == []
remover(): Fila =
se saida == [] então
Fila([], entrada.inverta.cauda)
senãose saida.cauda == [] então
Fila([], entrada.inverta)
senão
Fila(entrada, saida.cauda)
fim
fim
fila_vazia = Fila([], [])
folha: No = Folha()
c = leia_inteiro
para i de 1 até c faça
leia_texto
num = leia_inteiros(" ")
arvore = num.injete(folha)((a, b) => a.inserir(b))
var fila := fila_vazia.inserir(arvore)
var list: Lista[Inteiro] = []
enquanto não fila.vazia faça
a = fila.cabeça
list := a.valor :: list
fila := fila.remover()
se a.esquerda <> folha então fila := fila.inserir(a.esquerda) fim
se a.direita <> folha então fila := fila.inserir(a.direita) fim
fim
escreva "Case {i}:"
escreva list.inverta.junte(" ")
escreva ""
fim
1071 - Soma de Impares Consecutivos I
limites = leia_inteiros(2).ordene
var soma := 0
para n de limites[1] + 1 até limites[2] - 1 faça
se n mod 2 <> 0 então
soma := soma + n
fim
fim
escreva soma
2402 - Selos
n = BigInt(leia_texto)
fatoravel(a: BigInt, i: Inteiro): Logico = a > i e i < 100000 e (
a mod i == 0 ou fatoravel(a, i + 2)
)
resposta = se (n > 3 e n mod 2 == 0) ou fatoravel(n, 3) entao "S" senao "N" fim
escreva resposta
1187 - Área Superior
o = leia_texto
nums = leia_reais(144)
var soma := 0.0
para i de 0 até 11, j de i + 2 até 11 - i faça
soma := soma + nums[i * 12 + j]
fim
se o == "S" então
escreva soma formato "%.1f"
senão
escreva soma / 30 formato "%.1f"
fim
2408 - Vice-Campeão
abc = leia_inteiros(" ").ordene
escreva abc[2]
1515 - Hello Galaxy
var n := leia_inteiro
enquanto n > 0 faca
s = para i de 1 ate n, l em [leia_textos(" ")] gere
(l[1], l[2].inteiro - l[3].inteiro)
fim
r = s.injete((a, b: (Texto, Inteiro)) =>
se a.segundo < b.segundo entao a senao b fim
)
escreva r.primeiro
n := leia_inteiro
fim
2221 - Batalha de Pomekons
t = leia_inteiro
para i de 1 ate t faca
b = leia_inteiro
j1, j2 = leia_inteiros(" ")
ad, dd, ld = j1[1], j1[2], j1[3]
ag, dg, lg = j2[1], j2[2], j2[3]
vd = ad + dd - 2 * b * (ld mod 2)
vg = ag + dg - 2 * b * (lg mod 2)
escreva se vd > vg entao "Dabriel" senaose vg > vd entao "Guarte" senao "Empate" fim
fim
1026 - Carrega ou não Carrega?
var entrada := leia_texto
enquanto entrada <> nulo faça
nums = entrada.divida(" ").mapeie(x => BigInt(x))
var a, b := nums[1], nums[2]
var resp := BigInt(0)
var i := BigInt(1)
enquanto a * b > 0 faça
se a mod 2 + b mod 2 == 1 então
resp := resp + i
fim
a, b, i := a div 2, b div 2, i * 2
fim
escreva resp + (a + b) * i
entrada := leia_texto
fim
2189 - Quermesse
comparar(a, b: Inteiro) =
se a == b ou a < 0 então
- abs(a)
senão
a + 1
fim
var n := leia_inteiro
var t := 0
enquanto n > 0 faça
ingressos = leia_inteiros(" ")
t := t + 1
escreva "Teste {t}"
escreva - ingressos.injete(1)(comparar)
escreva ""
n := leia_inteiro
fim
3422 - José e a Súmula
min(a, b: Inteiro): Inteiro = se a <= b então a senão b fim
n = leia_inteiro
para i de 1 até n faça
a = leia_textos(" ")
o, tempo = a[1].inteiro, a[2]
t = (se tempo == "1T" então 0 senão 45 fim) + min(45, o)
extra = o - 45
se extra <= 0 então
escreva t
senão
escreva "{t}+{extra}"
fim
fim
1185 - Acima da Diagonal Secundária
o = leia_texto
nums = leia_reais(144)
var soma := 0.0
para i de 0 até 11, j de 1 até 11-i faça
soma := soma + nums[i * 12 + j]
fim
se o == "S" então
escreva soma formato "%.1f"
senão
escreva soma / 66 formato "%.1f"
fim
2338 - Morse
letras = ["=.===", "===.=.=.=", "===.=.===.=", "===.=.=", "=", "=.=.===.=",
"===.===.=", "=.=.=.=","=.=", "=.===.===.===", "===.=.===", "=.===.=.=",
"===.===", "===.=", "===.===.===", "=.===.===.=", "===.===.=.===",
"=.===.=", "=.=.=", "===", "=.=.===", "=.=.=.===", "=.===.===",
"===.=.=.===", "===.=.===.===", "===.===.=.="]
ponto = "\\."
converta_letra(letra: Texto) = (letras.posição(letra) + 96).caractere
converta_palavra(palavra: Texto) = palavra.divida(ponto * 3).mapeie(converta_letra).junte("")
t = leia_inteiro
para i de 1 até t faça
s = leia_texto
palavras = s.divida(ponto * 7).mapeie(converta_palavra).junte(" ")
escreva palavras
fim
2423 - Receita de Bolo
s = leia_inteiros(" ")
farinha, ovos, leite = s[1] div 2, s[2] div 3, s[3] div 5
se farinha <= ovos e farinha <= leite entao
escreva farinha
senaose ovos <= leite entao
escreva ovos
senao
escreva leite
fim
1273 - Justificador
var n := leia_inteiro
enquanto n > 0 faca
s = leia_textos(n)
tam = s.injete(0)((a, b) => se b.tamanho > a entao b.tamanho senao a fim)
para linha em s faca
escreva linha formato "%{tam}s"
fim
n := leia_inteiro
se n > 0 entao escreva "" fim
fim
3262 - Timebomb
numeros = ["*** * *** *** * * *** *** *** *** ***",
"* * * * * * * * * * * * * *",
"* * * *** *** *** *** *** * *** ***",
"* * * * * * * * * * * * *",
"*** * *** *** * *** *** * *** ***"]
codigos(linhas: Lista[Texto]) =
para i de 0 até linhas[1].tamanho div 4 gere
para j de 1 até 5 gere linhas[j].descarte(i * 4).pegue(3) fim.junte("")
fim
num = codigos(numeros)
entrada = codigos(leia_textos(5))
beer = para a em entrada gere num.posição(a) - 1 fim.mapeie(_.texto).junte("")
se beer.contem('-') ou beer.inteiro mod 6 <> 0 então
escreva "BOOM!!"
senao
escreva "BEER!!"
fim
2602 - Select Básico
use sql
tipo Clientes: Tabela
_tabela = "customers"
nome = campo("name")
estado = campo("state")
fim
c = Clientes()
consulta = Selecionar()
.tabela(c)
.campos([c.nome])
.onde(c.estado == "RS")
.sql
escreva consulta
2235 - Andando no Tempo
x = leia_inteiros(" ")
a, b, c = x[1], x[2], x[3]
se a + b == c ou a == b + c ou b == a + c ou a == b ou a == c ou b == c então
escreva "S"
senão
escreva "N"
fim
1278 - Justificador II
var n := leia_inteiro
enquanto n > 0 faca
linhas = leia_textos(n).mapeie(_.descarte_enquanto(_ == ' ').divida(" ").junte(" "))
tamanho = linhas.injete(0)((a, b) => se b.tamanho > a entao b.tamanho senao a fim)
alinhamento = "%{tamanho}s"
para i de 1 ate n faca
escreva linhas[i] formato alinhamento
fim
n := leia_inteiro
se n > 0 entao escreva "" fim
fim
2936 - Quanta Mandioca?
a = leia_inteiros(5)
p = [300, 1500, 600, 1000, 150]
var total := 225
para i de 1 ate 5 faca
total := total + a[i]* p[i]
fim
escreva total
2729 - Lista de Compras
n = leia_inteiro
para i de 1 até n faça
linha = leia_texto.divida(" ").ordene
var ultimo := ""
var lista := [""].cauda
para item em linha faça
se item <> ultimo então
lista := lista + [item]
ultimo := item
fim
fim
escreva lista.junte(" ")
fim
1251 - Diga-me a Frequência
var s := leia_texto
var b := falso
enquanto nao eof faca
x = s.ordene.divida_quando(_ <> _)
.mapeie(a => "{a.tamanho formato "%04d"}{(128 - a[1]).caractere}")
.ordene
.mapeie(a => "{128 - a[5]} {a.pegue(4).inteiro}")
se b entao escreva "" senao b := verdadeiro fim
escreva x.junte("\n")
s := leia_texto
fim
2413 - Busca na Internet
escreva leia_inteiro * 4
3130 - Caixas Por Todo Lado
comprimento, largura, alt = leia_inteiro
altura = se alt < 5 entao alt senao 5 fim
creditos = comprimento * largura * altura +
(comprimento div 2) * (largura div 2) * (altura div 2) * 2
escreva "$" + creditos
2176 - Paridade
a = leia_texto
imprima a
escreva a.selecione(_ == '1').tamanho mod 2
1146 - Sequências Crescentes
lista = para i de 1 até 10000 gere i fim
var n := leia_inteiro
enquanto n <> 0 faça
escreva lista.pegue(n).junte(" ")
n := leia_inteiro
fim
1754 - A Sala do Tempo
n = leia_inteiro
para i de 1 ate n faça
xy = leia_textos(" ")
x, y = BigInt(xy[1]), xy[2].inteiro
k = (x + y - 1) div y
se k < 2 então
escreva 2
senão
escreva k
fim
fim
2391 - Progressões Aritméticas
pas(nums: Lista[Inteiro], tamanho, total: Inteiro): Inteiro =
se tamanho < 3 então total
senãose nums[1] + nums[3] == 2 * nums[2] então pas(nums.cauda, tamanho - 1, total)
senão pas(nums.descarte(2), tamanho - 2, total + 1)
fim
n = leia_inteiro
a = leia_inteiros(" ")
escreva pas(a, n, 1)
# # Imperativo
# var n := leia_inteiro
# var a := leia_inteiros(" ")
# var total := 1
# enquanto n > 2 faça
# se a[1] + a[3] == 2 * a[2] então
# a := a.descarte(1)
# n := n - 1
# senão
# a := a.descarte(2)
# n := n - 2
# total := total + 1
# fim
# fim
# escreva total
1959 - Polígonos Regulares Simples
entrada = leia_reais(" ")
n = entrada[1]
l = entrada[2]
escreva (n * l) formato "%.0f"
2556 - Reinauguração do CEI
var n := leia_inteiro
enquanto n > 0 faça
m = leia_inteiros(" ").ordene
a = m.descarte(n div 2 - 1)
escreva "{n div 2} {a[2] - a[1]}"
n := leia_inteiro
fim
1103 - Alarme Despertador
var entrada := leia_inteiros(" ")
enquanto entrada <> [0,0,0,0] faça
h1 = entrada[1]
m1 = entrada[2]
h2 = entrada[3]
m2 = entrada[4]
tempo = ((24 + h2 - h1) * 60 + m2 - m1) mod (24 * 60)
escreva tempo
entrada := leia_inteiros(" ")
fim
3358 - Sobrenome Não é Fácil
n = leia_inteiro
para i de 1 ate n faça
s = leia_texto
a = s.minusculo.divida_quando((x, y) => "aeiou" - "{x}" <> "aeiou" ou "aeiou" - "{y}" <> "aeiou")
b = a.ordene(_.tamanho).ultimo.tamanho
se b >= 3 entao
escreva "{s} nao eh facil"
senao
escreva "{s} eh facil"
fim
fim
2253 - Validador de Senhas
var s := leia_texto
enquanto nao eof faca
min = s.selecione(c => c >= 'a' e c <='z').tamanho
mai = s.selecione(c => c >= 'A' e c <='Z').tamanho
tam = s.selecione(c => c >= '0' e c <='9').tamanho
se min > 0 e mai > 0 e tam > 0 e (min + mai + tam) == s.tamanho e s.tamanho >= 6 e s.tamanho <= 32 entao
escreva "Senha valida."
senao
escreva "Senha invalida."
fim
s := leia_texto
fim
3042 - Desviando de Árvores de Natal
var m := leia_inteiro
enquanto m > 0 faça
var p := 2
var cont := 0
para i de 1 até m faça
linha = leia_texto
escolha linha
caso "0 1 1" se p <> 1 => cont := cont + abs(p - 1) p := 1
caso "1 0 1" se p <> 2 => cont := cont + abs(p - 2) p := 2
caso "1 1 0" se p <> 3 => cont := cont + abs(p - 3) p := 3
caso _ =>
fim
fim
escreva cont
m := leia_inteiro
fim
3257 - Plantando Árvores
n = leia_inteiro
t = leia_inteiros(" ").ordene(_ > _)
var festa := 0
t.injete(2)((a, b) => se b + a > festa então festa := a + b a + 1 senao a + 1 fim)
escreva festa
2717 - Tempo do Duende
n = leia_inteiro
entrada = leia_inteiros(" ")
a = entrada[1]
b = entrada[2]
se a + b > n então
escreva "Deixa para amanha!"
senão
escreva "Farei hoje!"
fim
1219 - Flores Coloridas
area_circulo(raio: Real) = PI * raio ^ 2
resposta(a, b, c: Inteiro)
s = (a + b + c) / 2
area_triangulo = (s * (s - a) * (s - b) * (s - c)) ^ 0.5
raio_circulo_interno = area_triangulo / s
raio_circulo_externo = a * b * c / (4 * area_triangulo)
rosas = area_circulo(raio_circulo_interno)
violetas = area_triangulo - rosas
girassois = area_circulo(raio_circulo_externo) - violetas - rosas
retorne (girassois, violetas, rosas)
fim
var entrada := leia_texto
enquanto nao eof faça
en = entrada.divida(" ").mapeie(_.inteiro)
a, b, c = en[1], en[2], en[3]
r = resposta(a, b, c)
escreva "{r.primeiro formato "%.4f"} {r.segundo formato "%.4f"} {r.terceiro formato "%.4f"}"
entrada := leia_texto
fim
1548 - Fila do Recreio
n = leia_inteiro
para i de 1 ate n faca
m = leia_inteiro
p = leia_inteiros(" ")
r = p.ordene.inverta
a = para i de 1 ate m se p[i] == r[i] gere 1 fim
escreva a.tamanho
fim
2028 - Sequência de Sequência
var casos := 0
var entrada := leia_texto
enquanto nao eof faca
n = entrada.inteiro
casos := casos + 1
saida = 0 :: para i de 1 ate n, j de 1 ate i gere i fim
tamanho = saida.tamanho
escreva "Caso {casos}: {tamanho} {se tamanho == 0 entao "numero" senao "numeros" fim}"
escreva saida.junte(" ")
escreva ""
entrada := leia_texto
fim
2376 - Copa do Mundo
jogos = para i de 1 ate 15 gere
a = leia_inteiros(" ")
a[1] > a[2]
fim
jogo1 =
se jogos[15] entao
se jogos[13] entao
se jogos[9] entao 1 senao 2 fim
senao
se jogos[10] entao 3 senao 4 fim
fim
senao
se jogos[14] entao
se jogos[11] entao 5 senao 6 fim
senao
se jogos[12] entao 7 senao 8 fim
fim
fim
campeao = se jogos[jogo1] entao jogo1 * 2 - 1 senao jogo1 * 2 fim
escreva "ABCDEFGHIJKLMNOP"[campeao]
3343 - Attack On Gasparini
entrada = leia_inteiros(" ")
titas = leia_texto
tamanho = leia_inteiros(" ")
n, x = entrada[1], entrada[2]
t1, t2, t3 = tamanho[1], tamanho[2], tamanho[3] # tamanho dos titas
var muralhas := Lista.mutável(n, x)
var p, m, g = 1
para t em titas faça
escolha t
caso 'P' =>
enquanto muralhas[p] < t1 faça p := p + 1 fim
muralhas[p] := muralhas[p] - t1
caso 'M' =>
enquanto muralhas[m] < t2 faça m := m + 1 fim
muralhas[m] := muralhas[m] - t2
caso _ =>
enquanto muralhas[g] < t3 faça g := g + 1 fim
muralhas[g] := muralhas[g] - t3
fim
fim
escreva [p, m, g].ordene[3]
1154 - Idades
var idade := leia_inteiro
var soma, n := 0
enquanto idade >= 0 faça
soma := soma + idade
n := n + 1
idade := leia_inteiro
fim
escreva soma / n formato "%.2f"
2727 - Código Secreto
var n := leia_inteiro
enquanto n > 0 faça
para i de 1 até n faça
s = leia_textos(" ")
letra = s.tamanho * 3 + s[1].tamanho + 'a' - 4
escreva letra.caractere
fim
n := leia_inteiro
fim
1007 - Diferença
a = leia_inteiro
b = leia_inteiro
c = leia_inteiro
d = leia_inteiro
diferenca = (a * b - c * d)
escreva "DIFERENCA = {diferenca}"
2791 - Feijão
a = leia_texto
escolha a
caso "1 0 0 0" => escreva 1
caso "0 1 0 0" => escreva 2
caso "0 0 1 0" => escreva 3
caso _ => escreva 4
fim
2188 - Macaco-prego
var teste := 0
var n := leia_inteiro
enquanto n > 0 faça
var x, v := -10000
var y, u := 10000
para i de 1 até n faça
entrada = leia_inteiros(" ")
se entrada[1] > x então x := entrada[1] fim
se entrada[2] < y então y := entrada[2] fim
se entrada[3] < u então u := entrada[3] fim
se entrada[4] > v então v := entrada[4] fim
fim
teste := teste + 1
escreva "Teste {teste}"
se x < u e v < y então
escreva "{x} {y} {u} {v}"
senão
escreva "nenhum"
fim
escreva ""
n := leia_inteiro
fim
2981 - Vamos Fechar
a = leia_inteiros(" ")
c, g = a[1], a[2]
r = 21 + c div g
se r > 30 entao
escreva "A UFSC fecha dia {r - 30} de outubro."
senao
escreva "A UFSC fecha dia {r} de setembro."
fim
1929 - Triângulo
n = leia_inteiros(" ").ordene
se n[1]+n[2] > n[3] ou n[2] + n[3] > n[4] então
escreva "S"
senão
escreva "N"
fim
2674 - Super Primos: Ativar!
primo(a: Inteiro)
var resp := a > 1
para i de 2 até raiz(a).arredonde faça
se a mod i == 0 então
resp := falso
fim
fim
retorne resp
fim
var n:= leia_inteiro
enquanto n > 0 faça
se primo(n) entao
se n.texto - "014689" == n.texto entao
escreva "Super"
senão
escreva "Primo"
fim
senão
escreva "Nada"
fim
n:= leia_inteiro
fim
2514 - Alinhamento Lunar
mmc(x, y: Inteiro) = x * y div mdc(x, y)
mdc(x, y: Inteiro): Inteiro =
se y == 0 então x senão mdc(y, x mod y) fim
mmc_triplo(x, y, z: Inteiro) = mmc(x, mmc(y, z))
proximo_alinhamento(m, l1, l2, l3: Inteiro)
periodo = mmc_triplo(l1, l2, l3)
anos_faltantes = periodo - m
retorne anos_faltantes
fim
var m := leia_inteiro
enquanto m > 0 faça
l = leia_inteiros(" ")
anos_faltantes = proximo_alinhamento(m, l[1], l[2], l[3])
escreva anos_faltantes
m := leia_inteiro
fim
2568 - Ações
n = leia_inteiros(4)
var soma := n[2]
var i := n[1] + 1
enquanto i <= n[1] + n[4] faça
se i mod 2 <> 0 então
soma := soma - n[3]
senão
soma := soma + n[3]
fim
i := i + 1
fim
escreva soma
1795 - Triângulo Trinomial
n = leia_inteiro
resp = [1, 3, 9, 27, 81, 243, 729, 2187, 6561, 19683, 59049, "177147", "531441", "1594323", "4782969", "14348907", "43046721", "129140163", "387420489", "1162261467", "3486784401"]
escreva resp[n + 1]
1256 - Tabelas Hash
tipo Valor chave: Inteiro valor: Texto fim
valores = para j de 0 ate 100 gere Valor(j, "\\") fim
n = leia_inteiro
para i de 1 até n faça
m = leia_inteiros(" ")[1]
chaves = leia_inteiros(" ")
hash = (chaves.mapeie(a => Valor(a mod m, a.texto)) + valores.pegue(m))
.ordene(_.chave)
.divida_quando(_.chave <> _.chave)
para h em hash faça
escreva "{h[1].chave} -> {h.mapeie(_.valor).junte(" -> ")}"
fim
se i < n então
escreva ""
fim
fim
1258 - Camisetas
comp = (a, b: (Texto, Texto, Texto)) =>
se a.segundo <> b.segundo entao
a.segundo < b.segundo
senaose a.terceiro <> b.terceiro
a.terceiro > b.terceiro
senao
a.primeiro < b.primeiro
fim
var n := leia_inteiro
enquanto n > 0 faca
camisetas = Lista(n, (leia_texto, leia_texto.divida(" ")))
.mapeie(a => (a.primeiro, a.segundo[1], a.segundo[2]))
.ordene(comp)
para camiseta em camisetas faca
escreva "{camiseta.segundo} {camiseta.terceiro} {camiseta.primeiro}"
fim
n := leia_inteiro
se n > 0 entao escreva "" fim
fim
3302 - Resposta Certa
var n := leia_inteiro
enquanto n > 0 faca
numeros = leia_inteiros(n)
para i de 1 ate n faca
escreva "resposta {i}: {numeros[i]}"
fim
n := leia_inteiro
fim
3170 - Bolinhas de Natal
b, g = leia_inteiro
faltam = g div 2 - b
se faltam > 0 entao
escreva "Faltam {faltam} bolinha(s)"
senao
escreva "Amelia tem todas bolinhas!"
fim
1428 - Procurando Nessy
t = leia_inteiro
para i de 1 ate t faca
a = leia_inteiros(" ")
n, m = a[1], a[2]
escreva (n div 3) * (m div 3)
fim
2161 - Raiz Quadrada de 10
n = leia_inteiro
var fracao := 0.0
para i de 1 até n faça
fracao := 1 / (6 + fracao)
fim
escreva (3 + fracao) formato "%.10f"
1786 - CPF 2
pesos = [1,2,3,4,5,6,7,8,9]
sosep = pesos.inverta
verificadores(digitos: Lista[Inteiro])
soma1 = digitos.zip(pesos).mapeie(a => a.primeiro * a.segundo).injete(0)(_ + _)
soma2 = digitos.zip(sosep).mapeie(a => a.primeiro * a.segundo).injete(0)(_ + _)
b1 = soma1 mod 11 mod 10
b2 = soma2 mod 11 mod 10
retorne (b1, b2)
fim
var entrada := leia_texto
enquanto nao eof faça
digitos = entrada.lista.mapeie(_ - '0')
v = verificadores(digitos)
a123 = entrada.pegue(3)
a456 = entrada.descarte(3).pegue(3)
a789 = entrada.descarte(6)
b12 = "{v.primeiro}{v.segundo}"
escreva "{a123}.{a456}.{a789}-{b12}"
entrada := leia_texto
fim
2029 - Reservatório de Mel
var volume := leia_real
enquanto volume > 0 faca
diametro = leia_real
raio = diametro / 2
area = 3.14 * raio ^ 2
altura = volume / area
escreva "ALTURA = {altura formato "%.2f"}"
escreva "AREA = {area formato "%.2f"}"
volume := leia_real
fim
2293 - Campo de Minhocas
a = leia_inteiros(" ")
n, m = a[1], a[2]
mat = para i de 1 ate n gere leia_inteiros(" ") fim
zero = para i de 1 ate m gere 0 fim
linhas = mat.mapeie(x => x.injete(0)(_ + _))
colunas = mat.injete(zero)(
(x, y) => para i de 1 ate m gere x[i] + y[i] fim)
escreva (linhas + colunas).ordene.ultimo
1371 - Fechem as Portas!
var n := leia_inteiro
enquanto n > 0 faça
portas = para i de 1 até raiz(n).inteiro
gere i * i
fim
escreva portas.junte(" ")
n := leia_inteiro
fim
3208 - O Criptógrafo Envergonhado
var entrada := leia_texto
enquanto entrada <> "0 0" faca
k = BigInt(entrada.divida(" ")[1])
l = entrada.divida(" ")[2].inteiro
var i := 2
enquanto k mod i <> 0 e i <= l faca i := i + 1 fim
se i >= l entao
escreva "GOOD"
senao
escreva "BAD {i}"
fim
entrada := leia_texto
fim
1865 - Mjölnir
n = leia_inteiro
para i de 1 até n faça
nome = leia_textos(" ").cabeça
se nome == "Thor" então
escreva "Y"
senão
escreva "N"
fim
fim
1107 - Escultura à Laser
var entrada := leia_inteiros(2)
enquanto entrada[1] <> 0 faça
altura, comprimento = entrada[1], entrada[2]
xs = leia_inteiros(" ")
var quantidade, anterior := altura - xs[1], xs[1]
para x em xs.cauda faca
se x < anterior entao
quantidade := quantidade + anterior - x
fim
anterior := x
fim
escreva quantidade
entrada := leia_inteiros(2)
fim
1239 - Atalhos Bloggo
sub(texto: Texto, chr: Caractere, tag1, tag2: Texto)
f(s: Texto, inicio: Logico): Texto
p = s.posicao(chr)
se p > 0 entao
f(s.pegue(p-1) + (se inicio entao tag1 senao tag2 fim) + s.descarte(p), nao inicio)
senao
s
fim
fim
retorne f(texto, verdadeiro)
fim
bold(s: Texto) = sub(s, '*', "<b>", "</b>")
italic(s: Texto) = sub(s, '_', "<i>", "</i>")
var texto := leia_texto
enquanto nao eof faca
escreva bold(italic(texto))
texto := leia_texto
fim
1332 - Um-Dois-Três
n = leia_inteiro
para i de 1 até n faça
a = leia_texto
se a.tamanho==5 então
escreva 3
senãose [a[1]=='o', a[2]=='n', a[3]=='e'].selecione(a => a).tamanho >= 2 então
escreva 1
senão
escreva 2
fim
fim
2753 - Saída 7
para a de 'a' até 'z' faça
escreva "{a.inteiro} e {a}"
fim
2759 - Entrada e Saída de Carácter
a, b, c = leia_texto
escreva "A = {a}, B = {b}, C = {c}"
escreva "A = {b}, B = {c}, C = {a}"
escreva "A = {c}, B = {a}, C = {b}"
2166 - Raiz Quadrada de 2
n = leia_inteiro
var r := 0.0
para i de 1 até n faça
r := 1 / (2 + r)
fim
escreva (r + 1) formato "%.10f"
1765 - Trapézios de Natal
var t := leia_inteiro
enquanto t <> 0 faça
para c de 1 ate t faça
dados = leia_reais(3)
escreva "Size #{c}:"
escreva "Ice Cream Used: {((dados[2] + dados[3]) * 5) / 2 * dados[1] formato "%.2f"} cm2"
fim
escreva ""
t := leia_inteiro
fim
2457 - Letras
c = leia_texto[1]
texto = leia_textos(" ")
palavras = texto.selecione(_.contem(c))
escreva (palavras.tamanho * 100 / texto.tamanho) formato "%.1f"
2557 - R+L=J
var entrada := leia_texto
enquanto nao eof faça
a = entrada.divida("\\=")
b = a[1].divida("\\+")
rlj = [b[1], b[2], a[2]].mapeie(_.inteiro)
resposta = escolha rlj
caso [r, l, 0] => r + l
caso [r, 0, j] => j - r
caso [0, l, j] => j - l
caso _ => -1
fim
escreva resposta
entrada := leia_texto
fim
3416 - Eu Quero Cafééé
entrada = leia_inteiros(" ")
n, l, d = entrada[1], entrada[2], entrada[3]
a = n * d / (l * 1000)
b = a.teto.inteiro
escreva b * l
3091 - Resto 1.0
a, b = leia_inteiro
escreva a mod b
2510 - Batmain
n = leia_inteiro
para i de 1 ate n faca
leia_texto
escreva("Y")
fim
2679 - Sucessor Par
n = leia_inteiro
se n mod 2 == 0 então
escreva n + 2
senão
escreva n + 1
fim
2311 - Saltos Ornamentais
n = leia_inteiro
para i de 1 até n faça
nome = leia_texto
gd = leia_real
notas = leia_reais(" ")
.ordene
.descarte(1)
.pegue(5)
soma = notas.injete(0.0)(_ + _)
escreva "{nome} {soma * gd formato "%.2f"}"
fim
2721 - Indecisão das Renas
renas = "Dasher Dancer Prancer Vixen Comet Cupid Donner Blitzen Rudolph".divida(" ")
votos = leia_inteiros(" ").injete(0)((a, b) => a + b)
rena = se votos mod 9 == 0 então 9 senão votos mod 9 fim
escreva renas[rena]
2084 - Eleições
n = leia_inteiro
votacao = leia_inteiros(n).ordene((a, b) => a > b)
total_votos = votacao.injete(0)((x, y) => x + y)
perc_pri = votacao[1] / total_votos
perc_seg = votacao[2] / total_votos
se perc_pri >= 0.45 ou (perc_pri >= 0.4 e perc_pri - perc_seg >= 0.1) então
escreva 1
senão
escreva 2
fim
2987 - Balão de Honra
escreva leia_texto[1] - 64
2493 - Jogo do Operador
var t := leia_inteiro
enquanto t > 0 faca
jogos = para i de 1 ate t,
a em [leia_textos("=")],
b em [a[1].divida(" ").mapeie(_.inteiro)],
x em [b[1]], y em [b[2]], z em [a[2].inteiro] gere
(se x + y == z entao "+" senao "" fim)
+ (se x - y == z entao "-" senao "" fim)
+ (se x * y == z entao "*" senao "" fim)
fim
var passou := Lista(0, "")
para i de 1 ate t faca
a = leia_textos(" ")
n, eh, r = a[1], a[2].inteiro, a[3].cabeca
se nao (jogos[eh].contem(r) ou (jogos[eh] == "" e r == 'I')) entao passou := n :: passou fim
fim
se passou.tamanho == t entao
escreva "None Shall Pass!"
senaose passou.tamanho == 0 entao
escreva "You Shall All Pass!"
senão
escreva passou.ordene.junte(" ")
fim
t := leia_inteiro
fim
2422 - Soma das Casas
n = leia_inteiro
c = Lista.mutável(n, 0)
para i de 1 até n faça c[i] := leia_inteiro fim
k = leia_inteiro
var min, max := 1, n
enquanto min < max faça
soma = c[min] + c[max]
se soma > k então
max := max - 1
senãose soma < k então
min := min + 1
senão
escreva "{c[min]} {c[max]}"
min := max # terminar
fim
fim
1117 - Validação de Nota
var soma := 0.0
var válidas := 0
enquanto válidas < 2 faça
n = leia_real
se n >= 0.0 e n <= 10.0 então
soma := soma + n
válidas := válidas + 1
senão
escreva "nota invalida"
fim
fim
escreva "media = {(soma / 2) formato "%.2f"}"
3038 - Carta de Natal Criptografada
var linha := leia_texto
enquanto nao eof faca
saida = para c em linha gere
escolha c
caso '@' => 'a'
caso '&' => 'e'
caso '!' => 'i'
caso '*' => 'o'
caso '#' => 'u'
caso c => c
fim
fim
escreva saida.junte("")
linha := leia_texto
fim
1574 - Instruções do Robô
t = leia_inteiro
para i de 1 até t faça
n = leia_inteiro
var instruções := Lista(0, 0)
para j de 1 até n faça
a = leia_textos(" ")
instruções := (escolha a
caso ["LEFT"] => -1
caso ["RIGHT"] => 1
caso _ => instruções[j - a[3].inteiro]
fim) :: instruções
fim
escreva instruções.injete(0)(_ + _)
fim
1011 - Esfera
r = leia_inteiro
pi = 3.14159
volume = (4.0 / 3.0) * pi * (r * r * r)
escreva "VOLUME = {volume formato "%.3f"}"
2774 - Precisão do Sensor
var a := leia_inteiro
enquanto a > 0 faça
n = leia_reais(" ")
tam = n.tamanho
media = n.injete(0.0)((parcial, x) => parcial + x / tam)
soma = n.mapeie(i => (i - media) ^ 2).injete(0.0)(_ + _)
sigma = (soma / (tam - 1)) ^ 0.5
escreva sigma formato "%.5f"
a := leia_inteiro
fim
2906 - Database of Clients
n = leia_inteiro
limpar(s: Texto) = s.selecione(_ <> '.').pegue_enquanto(_ <> '+')
emails = leia_textos(n)
.mapeie(_.divida("@"))
.mapeie(a => "{limpar(a[1])}@{a[2]}")
.ordene
diferentes = emails.zip(emails.cauda).selecione(a => a.primeiro <> a.segundo).tamanho + 1
escreva diferentes
1048 - Aumento de Salário
sal = leia_real
var novosal := 0.0
se sal > 0
novosal := sal * 1.15
senaose sal > 400
novosal := sal * 1.12
senaose sal > 800
novosal := sal * 1.10
senaose sal > 1200
novosal := sal * 1.07
senaose sal > 2000
novosal := sal * 1.04
fim
escreva ("Novo salario: {novosal formato "%.2f"}")
escreva ("Reajuste ganho: {novosal-sal formato "%.2f"}")
escreva ("'Em percentual: {(novosal/sal-1)*100 formato "%.2f"} %")
1933 - Tri-du
s = leia_inteiros(" ")
a, b = s[1], s[2]
se a > b então
escreva a
senão
escreva b
fim
1589 - Bob Conduite
t = leia_inteiro
para i de 1 até t faça
r = leia_inteiros(" ")
escreva r[1]+r[2]
fim
3106 - Competição de Códigos
n = leia_inteiro
s = leia_inteiros(" ")
r = s.injete(0)((a, b) => a + (b div 3 * 3))
escreva r
3468 - Faça mais, mas faça melhor!
ideia = leia_texto
se ideia.minúsculo == "oposicao" ou ideia.minúsculo == "contrariedade" então
escreva("mas")
senão
escreva("mais")
fim
1542 - Lendo Livros
var a := leia_inteiros(" ")
enquanto a[1] > 0 faça
paginas = a[1] * a[2] * a[3] div (a[3] - a[1])
se paginas > 1 entao
escreva "{paginas} paginas"
senao
escreva "{paginas} pagina"
fim
a := leia_inteiros(" ")
fim
1144 - Sequência Lógica
n = leia_inteiro
para a de 1 até n faça
b = a * a
c = b * a
escreva "{a} {b} {c}"
escreva "{a} {b+1} {c+1}"
fim
2116 - Diversão dos Alunos
a = leia_inteiros(" ").ordene
n, m = a[1], a[2]
crivo(nums: Lista[Inteiro]): Lista[Inteiro] = escolha nums
caso [] => []
caso num =>
c = num.cabeca
c :: crivo(num.selecione(x => x mod c <> 0))
fim
ints = para i de 2 ate m gere i fim
primos = crivo(ints).inverta
p1 = primos.descarte_enquanto(_ > n).cabeca
p2 = primos.descarte_enquanto(_ > m).cabeca
escreva p1 * p2
2839 - As Meias de Rangel
escreva leia_inteiro + 1
1043 - Triângulo
valores = leia_reais(" ")
a, b, c = valores[1], valores[2], valores[3]
se ((a < b + c) e (b < a + c) e (c < a + b)) então
perimetro = a + b + c
escreva "Perimetro = {perimetro formato "%.1f"}"
senão
area = (a + b) * c / 2
escreva "Area = {area formato "%.1f"}"
fim
2802 - Dividindo Círculos
n = leia_inteiro
a = (n / 24) * (n ^ 3 - 6 * n ^ 2 + 23 * n - 18) + 1
escreva a formato "%.0f"
3500 - Deus-serpente M’boi as Cataratas do Iguaçu
a = leia_inteiros(" ")
E, V = a[1], a[2]
t = (19 + E/V) mod 24
h = (t + 0.001).inteiro
m = (t - h) * 60
escreva "{h formato "%02d"}:{m formato "%02.0f"}"
3138 - Aniversário do Tobias
fat(n: Int): BigInt =
se n > 1 entao n * fat(n - 1) senao 1 fim
baloes(lista: Lista[(Texto, Inteiro)]): Lista[(Texto, Inteiro)] =
se
lista.tamanho <= 1 entao lista
senao
se lista[1].primeiro == lista[2].primeiro entao
baloes((lista[1].primeiro, lista[1].segundo + lista[2].segundo) :: lista.descarte(2))
senao
lista.cabeca :: baloes(lista.cauda)
fim
fim
leia_tupla()
a = leia_textos(" ")
retorne (a[1], a[2].inteiro)
fim
n = leia_inteiro
quantidades = baloes(para i de 1 ate n gere leia_tupla fim.ordene(_.primeiro))
total = quantidades.injete(0)(_ + _.segundo)
possibilidades = fat(total) div quantidades.injete(BigInt(1))((a, b) => a * fat(b.segundo))
escreva "Feliz aniversario Tobias!"
escreva possibilidades
2378 - Elevador
a = leia_inteiros(" ")
n, c = a[1], a[2]
var excedida := "N"
var pessoas := 0
var i := 0
enquanto i < n faca
b = leia_inteiros(" ")
pessoas := pessoas + b[2] - b[1]
se pessoas > c entao
excedida := "S"
i := n
fim
i := i + 1
fim
escreva excedida
2896 - Aproveite a Oferta
t = leia_inteiro
para i de 1 até t faça
entrada = leia_inteiros(" ")
n, k = entrada[1], entrada[2]
g = n mod k + n div k
escreva g
fim
1690 - Soma de Sobconjuntos
t = leia_inteiro
para i de 1 até t faça
n = leia_inteiro
var num := leia_textos(" ").mapeie(a => BigInt(a)).ordene.mutável
var soma, i := BigInt(1), 1
enquanto i <= n e soma >= num[i] faça
soma := soma + num[i]
i := i + 1
fim
escreva soma
fim
3182 - Planejamento de Evento
in = leia_inteiros(" ")
guests, budget, hotels = in[1], in[2], in[3]
values =
para i de 1 até hotels,
price em [leia_inteiro],
rooms em [leia_inteiros(" ").ordene( _ > _ ).cabeça]
se rooms >= guests e price * guests <= budget gere
price * guests
fim
se values == [] então
escreva "stay home"
senão
escreva values.ordene.cabeça
fim
3160 - Amigos
l, n = leia_textos(" ")
s = leia_texto
amigos = se s == "nao" então
l + n
senão
antes = l.pegue_enquanto(_ <> s)
depois = l.descarte_enquanto(_ <> s)
antes + n + depois
fim
escreva amigos.junte(" ")
1307 - Tudo o que Você Precisa é Amor
bin2dec(s: Texto): Inteiro =
para i de 1 ate s.tamanho se s[i] == '1'
gere (2 ^ (i - 1)).inteiro
fim.injete(0)(_ + _)
mdc(a, b: Inteiro): Inteiro = se b == 0
então a
senão mdc(b, a mod b)
fim
t = leia_inteiro
para i de 1 ate t faça
a, b = bin2dec(leia_texto.inverta)
se mdc(a, b) > 1
então escreva "Pair #{i}: All you need is love!"
senão escreva "Pair #{i}: Love is not all you need!"
fim
fim
1175 - Troca em Vetor I
num = leia_inteiros(20)
para i de 0 até 19 faça
escreva "N[{i}] = {num[20-i]}"
fim
2780 - Basquete de Robôs
d = leia_inteiro
se d <= 800 então
escreva 1
senãose d <= 1400 então
escreva 2
senão
escreva 3
fim
2180 - Viagem à Marte na Velocidade de Primo
primo(n: Inteiro): Lógico =
n mod 2 > 0 e (para i de 2 ate raiz(n).inteiro se n mod i == 0 gere i fim == [])
primos(inicio, quantos: Inteiro): Lista[Inteiro] =
se quantos > 0 então
se primo(inicio) então
inicio :: primos(inicio + 1, quantos - 1)
senão
primos(inicio + 1, quantos)
fim
senão
[]
fim
n = leia_inteiro
soma = primos(n, 10).injete(0)(_ + _)
horas = 60000000 div soma
dias = horas div 24
escreva "{soma} km/h"
escreva "{horas} h / {dias} d"
3456 - Divisibilidade por 7
var a := BigInt(leia_texto)
escreva a
enquanto a > 9 faça
a := a div 10 * 3 + a mod 10
escreva a
fim
1877 - O Castelo de Neve de Sansa
zip3(a, b, c: Lista[Inteiro]) = a.zip(b).zip(c)
.mapeie(x => (x.primeiro.primeiro, x.primeiro.segundo, x.segundo))
k = leia_inteiros(" ")[2]
h = leia_inteiros(" ")
s = zip3(h, h.cauda, h.cauda.cauda)
x = s.mapeie(a => a.primeiro < a.segundo e a.segundo > a.terceiro)
.mapeie(pico => se pico entao 1 senao 0 fim)
picos = x.injete(0)(_ + _)
se picos == k entao
escreva "beautiful"
senao
escreva "ugly"
fim
1471 - Mergulho
# https://www.beecrowd.com.br/judge/pt/homeworks/view/29206
var a := leia_texto
enquanto nao eof faça
n, r = a.divida(" ")[1].inteiro, a.divida(" ")[2].inteiro
se n == r então
leia_texto
escreva "*"
senão
numeros = ((n + 1) :: leia_inteiros(" ")).ordene
var i := 0
para num em numeros faca
i := i + 1
enquanto i < num faça
imprima "{i} "
i := i + 1
fim
fim
escreva ""
fim
a := leia_texto
fim
2812 - Laércio
n = leia_inteiro
para i de 1 ate n faca
leia_inteiro
nums = leia_inteiros(" ").selecione(a => a mod 2 == 1).ordene.inverta
resp = para j de 2 ate nums.tamanho + 1, k em [se j mod 2 == 0 entao 1 senao -1 fim] gere
nums[k * j div 2]
fim.junte(" ")
escreva resp
fim
1080 - Maior e Posição
números = leia_inteiros(100)
maior = números.ordene.último
posição = números.posição(maior)
escreva maior
escreva posição
2632 - Magic and Sword
magia_dano(magia: Texto) = escolha magia
caso "fire" => 200
caso "water" => 300
caso "earth" => 400
caso _ => 100
fim
magia_raio(magia: Texto, lv: Texto) = escolha (magia, lv)
caso ("fire", "1") => 20
caso ("fire", "2") => 30
caso ("fire", "3") => 50
caso ("water", "1") => 10
caso ("water", "2") => 25
caso ("water", "3") => 40
caso ("earth", "1") => 25
caso ("earth", "2") => 55
caso ("earth", "3") => 70
caso ("air", "1") => 18
caso ("air", "2") => 38
caso _ => 60
fim
intercessao(cx: Inteiro, cy: Inteiro, raio: Inteiro, rx: Inteiro, ry: Inteiro, largura: Inteiro, altura: Inteiro)
cDx = abs(cx - (rx + largura / 2))
cDy = abs(cy - (ry + altura / 2))
se (cDx > (largura / 2 + raio)) ou (cDy > (altura / 2 + raio)) então
falso
senãose (cDx <= largura / 2) ou (cDy <= altura / 2) então
verdadeiro
senão
((cDx - largura/2)^2 + (cDy - altura/2)^2) <= raio^2
fim
fim
t = leia_inteiro
para i de 1 ate t faca
posicao = leia_inteiros(" ")
w, h, x0, y0 = posicao[1], posicao[2], posicao[3], posicao[4]
ataque = leia_textos(" ")
magia, lv, cx, cy = ataque[1], ataque[2], ataque[3].inteiro, ataque[4].inteiro
se intercessao(cx, cy, magia_raio(magia, lv), x0, y0, w, h) então
escreva magia_dano(magia)
senão
escreva 0
fim
fim
3055 - Nota Esquecida
a, m = leia_inteiro
b = m * 2 - a
escreva b
1557 - Matriz Quadrada III
pot = para i de 0 até 38 gere (2 ^ i).inteiro fim
var n := leia_inteiro
enquanto n > 0 faça
tam = "%{pot[2 * n - 1].texto.tamanho}d"
para i de 1 até n faça
imprima pot[i] formato tam
para j de 2 até n faça
imprima " {pot[i + j - 1] formato tam}"
fim
escreva ""
fim
escreva ""
n := leia_inteiro
fim
2129 - Fatorial
remove_zeros(a: Long): Long =
se a mod 10 == 0 e a > 0
entao remove_zeros(a div 10)
senao a
fim
var a: Long := 1
num =
para i de 1 ate 1000000 gere
var j := remove_zeros(i)
a := remove_zeros(a * j) mod 1000000
a mod 10
fim.mutável
var t := 0
var n := leia_inteiro
enquanto n > 0 faça
t := t + 1
escreva "Instancia {t}"
escreva num[n]
escreva ""
n := leia_inteiro
fim
1630 - Estacas
mdc(x, y: Inteiro): Inteiro =
se x > y entao mdc(x mod y, y)
senaose x == 0 entao y
senao mdc(y mod x, x) fim
var a := leia_texto
enquanto a <> nulo faca
b = a.divida(" ").mapeie(_.inteiro)
x, y = b[1], b[2]
m = mdc(x, y)
escreva 2 * (x+y) div m
a := leia_texto
fim
1162 - Organizador de Vagões
n = leia_inteiro
para a de 1 até n faça
l = leia_inteiro
var vagões := leia_inteiros(" ")
var cont := 0
var p := 1
enquanto vagões <> [] faça
se vagões[1] == p então
vagões := vagões.cauda
senão
pos = vagões.posição(p)
vagões := vagões.remova(pos)
cont := cont + pos - 1
fim
p := p + 1
fim
escreva "Optimal train swapping takes {cont} swaps."
fim
2757 - Entrada e Saída de Números Inteiros
a, b, c = leia_inteiro
escreva "A = {a}, B = {b}, C = {c}"
escreva "A = {a formato "%10d"}, B = {b formato "%10d"}, C = {c formato "%10d"}"
escreva "A = {a formato "%010d"}, B = {b formato "%010d"}, C = {c formato "%010d"}"
escreva "A = {a formato "%-10d"}, B = {b formato "%-10d"}, C = {c formato "%-10d"}"
3165 - Primos Gêmeos
n = leia_inteiro
var primos := 2 :: para i de 3 ate n passo 2 gere i fim
var i := 1
enquanto i < primos.tamanho faca
primeiro = primos[i]
primos := primos.selecione(a => a == primeiro ou a mod primeiro <> 0)
i := i + 1
fim
primos := primos.inverta
enquanto primos[1] - primos[2] > 2 faca primos := primos.cauda fim
escreva primos.pegue(2).inverta.junte(" ")
3034 - O Caso Douglas
primo(a: Inteiro)
var resposta = verdadeiro
para i de 3 ate raiz(a).inteiro passo 2 faca
se a mod i == 0 então
resposta := falso
fim
fim
retorne resposta
fim
n = leia_inteiro
para i de 1 ate n faça
num = leia_inteiro + 1
se num mod 2 == 1 e num mod 7 == 0 e primo(num + 2) então
escreva "Yes"
senao
escreva "No"
fim
fim
2410 - Frequencia na Aula
n = leia_inteiro
presencas = leia_textos(n).ordene.divida_quando(_ <> _).tamanho
escreva presencas
2785 - Pirâmide
n = leia_inteiro
var min := leia_inteiros(" ")
para i de 2 até n faça
linha = leia_inteiros(" ")
var soma := linha.pegue(i).injete(0)(_ + _)
para j de 1 até n - i + 1 faça
a = se min[j] < min[j+1] entao min[j] senao min[j+1] fim
min[j] := soma + a
se j < n - i + 1 entao
soma := soma + linha[j + i] - linha[j]
fim
fim
fim
escreva min.cabeça
2593 - Eachianos I
texto = leia_textos(" ")
n = leia_inteiro
palavras = leia_textos(" ")
var c := 0
letras = para p em texto gere
t = c
c := c + 1 + p.tamanho
[p, t]
fim
para a em palavras faca
b = letras.selecione(p => p[1] == a).mapeie(p => p[2])
se b.tamanho > 0 entao
escreva b.junte(" ")
senao
escreva -1
fim
fim
1029 - Fibonacci, Quantas Chamadas?
var fib := [1, 1]
enquanto fib.tamanho < 38 faça
fib := (fib[1] + fib[2]) :: fib
fim
var calls := [2, 0]
enquanto calls.tamanho < 38 faça
calls := (calls[1] + calls[2] + 2) :: calls
fim
n = leia_inteiro
para i de 1 até n faça
a = leia_inteiro
escreva "fib({a}) = {calls[-a]} calls = {fib[-a]}"
fim
1149 - Somando Inteiros Consecutivos
num = leia_inteiros(" ").selecione(a => a > 0)
a = num[1]
n = num[2]
escreva a * n + n * (n-1) div 2
2542 - Iu-Di-Oh!
var n := leia_inteiro
enquanto n > 0 faca
x = leia_inteiros(" ")
m, l = x[1], x[2]
cartas_m, cartas_l = leia_textos(m), leia_textos(l)
c = leia_inteiros(" ")
carta_m, carta_l = c[1], c[2]
a = leia_inteiro
marcos, leonardo = cartas_m[carta_m].divida(" ")[a].inteiro, cartas_l[carta_l].divida(" ")[a].inteiro
se marcos > leonardo entao
escreva "Marcos"
senaose marcos < leonardo entao
escreva "Leonardo"
senao
escreva "Empate"
fim
n := leia_inteiro
fim
1022 - TDA Racional
mdc(x, y: Inteiro): Inteiro = se y == 0 então x senão mdc(y, x mod y) fim
repetições = leia_inteiro
para i de 1 até repetições faça
entrada = leia_texto.divida(" ")
n1, d1 = entrada[1].inteiro, entrada[3].inteiro
operacao, n2, d2 = entrada[4], entrada[5].inteiro, entrada[7].inteiro
resultado = escolha operacao
caso "+" => (n1*d2 + n2*d1, d1*d2)
caso "-" => (n1*d2 - n2*d1, d1*d2)
caso "/" => (n1*d2, n2*d1)
caso "*" => (n1*n2, d1*d2)
fim
num, den = abs(resultado.primeiro), abs(resultado.segundo)
mdcOp = mdc(num, den)
sinal = se resultado.primeiro * resultado.segundo < 0 então "-" senão "" fim
escreva "{sinal}{num}/{den} = {sinal}{num div mdcOp}/{den div mdcOp}"
fim
2928 - Cruzando Lagos
n = leia_inteiro
s = leia_textos(n).mapeie(_.cabeca).junte("")
r = s.divida_quando(_ <> _).selecione(_.cabeca == '.').mapeie(_.tamanho).ordene.inverta
se r.tamanho > 0 e r.cabeca > 2 entao
escreva "N"
senao
escreva r.tamanho
fim
1177 - Preenchimento de Vetor II
t = leia_inteiro
para i de 0 até 999 faça
escreva "N[{i}] = {i mod t}"
fim
1061 - Tempo de um Evento
entrada = leia_textos(4)
d1 = entrada[1].divida(" ")[2].inteiro
h1 = entrada[2].pegue(2).inteiro
m1 = entrada[2].descarte(5).pegue(2).inteiro
s1 = entrada[2].descarte(10).inteiro
d2 = entrada[3].divida(" ")[2].inteiro
h2 = entrada[4].pegue(2).inteiro
m2 = entrada[4].descarte(5).pegue(2).inteiro
s2 = entrada[4].descarte(10).inteiro
t1 = ((d1 * 24 + h1) * 60 + m1) * 60 + s1
t2 = ((d2 * 24 + h2) * 60 + m2) * 60 + s2
t = t2 - t1
d = t div (24 * 3600)
h = t mod (24 * 3600) div 3600
m = t mod 3600 div 60
s = t mod 60
escreva "{d} dia(s)"
escreva "{h} hora(s)"
escreva "{m} minuto(s)"
escreva "{s} segundo(s)"
2139 - Natal de Pedrinho
var entrada := leia_texto
var dias := 0
enquanto nao eof faça
mes, dia = entrada.divida(" ")[1].inteiro, entrada.divida(" ")[2].inteiro
escolha mes
caso 1 => dias := (31 - dia) + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 25
caso 2 => dias := (29 - dia) + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 25
caso 3 => dias := (31 - dia) + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 25
caso 4 => dias := (30 - dia) + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 25
caso 5 => dias := (31 - dia) + 30 + 31 + 31 + 30 + 31 + 30 + 25
caso 6 => dias := (30 - dia) + 31 + 31 + 30 + 31 + 30 + 25
caso 7 => dias := (31 - dia) + 31 + 30 + 31 + 30 + 25
caso 8 => dias := (31 - dia) + 30 + 31 + 30 + 25
caso 9 => dias := (30 - dia) + 31 + 30 + 25
caso 10 => dias := (31 - dia) + 30 + 25
caso 11 => dias := (30 - dia) + 25
caso _ => dias := -2
fim
se ((mes == 12) e (dia <= 25)) então
dias := 25 - dia
senãose ((mes == 12) e (dia > 25)) então
dias := -1
fim
se dias == 0 então
escreva "E natal!"
senãose dias == 1 então
escreva "E vespera de natal!"
senãose dias == -1 então
escreva "Ja passou!"
senãose dias > 1 então
escreva "Faltam " + dias + " dias para o natal!"
fim
entrada := leia_texto
fim
1176 - Fibonacci em Vetor
var fib = Lista(61, BigInt(0))
fib[2] := 1
para i de 3 até 61 faça
fib[i] := fib[i-2] + fib[i-1]
fim
n = leia_inteiro
para i de 1 até n faça
x = leia_inteiro
escreva "Fib({x}) = {fib[x+1]}"
fim
1171 - Frequência de Números
n = leia_inteiro
x = Lista.mutável(2000, 0)
para i de 1 até n faça
a = leia_inteiro
x[a] := x[a] + 1
fim
para i de 1 até 2000 faça
se x[i] > 0 então
escreva "{i} aparece {x[i]} vez(es)"
fim
fim
2770 - Tamanho da Placa
var entrada := leia_texto
enquanto nao eof faca
a = entrada.divida(" ").mapeie(_.inteiro)
b = a.pegue(2).ordene
x, y, m = b[1], b[2], a[3]
para i de 1 ate m faca
z = leia_inteiros(" ").ordene
xi, yi = z[1], z[2]
se xi <= x e yi <= y entao
escreva "Sim"
senão
escreva "Nao"
fim
fim
entrada := leia_texto
fim
2418 - Carnaval
n = leia_reais(" ")
# soma = n.descarte(1).pegue(3).injete(0)(_ + _)
menor =
se n[1] <= n[2] e n[1] <= n[3] e n[1] <= n[4] e n[1] <= n[5] entao n[1]
senãose n[2] <= n[3] e n[2] <= n[4] e n[2] <= n[5] entao n[2]
senãose n[3] <= n[4] e n[3] <= n[5] entao n[3]
senãose n[4] <= n[5] entao n[4]
senão n[5]
fim
maior =
se n[1] >= n[2] e n[1] >= n[3] e n[1] >= n[4] e n[1] >= n[5] entao n[1]
senãose n[2] >= n[3] e n[2] >= n[4] e n[2] >= n[5] entao n[2]
senãose n[3] >= n[4] e n[3] >= n[5] entao n[3]
senãose n[4] >= n[5] entao n[4]
senão n[5]
fim
soma = n[1] + n[2] + n[3] + n[4] + n[5] - menor - maior
escreva soma formato "%.1f"
1198 - O Bravo Guerreiro Hashmat
var entrada := leia_texto
enquanto nao eof faca
se entrada.tamanho > 11 entao
s = entrada.divida(" ").mapeie(BigInt(_))
a, b = s[1], s[2]
escreva (b - a).abs
senao
s = entrada.divida(" ").mapeie(_.inteiro)
a, b = s[1], s[2]
escreva (b - a).abs
fim
entrada := leia_texto
fim
1213 - Ones
var n := leia_inteiro
enquanto n > 0 faça
var i, aux := 1
enquanto i mod n <> 0 faça
i := (i * 10 + 1) mod n
aux := aux + 1
fim
escreva aux
n := leia_inteiro
fim
2835 - Elevador
leia_inteiro
pesos = leia_inteiros(" ").ordene
dif = pesos.zip(0 :: pesos)
.mapeie(a => a.primeiro - a.segundo)
.injete(verdadeiro)((b, v) => b e v <= 8)
se dif entao
escreva "S"
senao
escreva "N"
fim
texto = leia_textos(",")
escreva texto[1]
escreva texto[2]
1044 - Múltiplos
ent = leia_inteiros(" ")
a, b = ent[1], ent[2]
se a mod b == 0 ou b mod a == 0 então
escreva "Sao Multiplos"
senão
escreva "Nao sao Multiplos"
fim
1245 - Botas Perdidas
var n := leia_inteiro
enquanto nao eof faca
var esq, dir := Lista(31, 0)
para i de 1 ate n faca
a = leia_textos(" ")
x = a[1].inteiro - 29
se a[2] == "E" entao
esq[x] := esq[x] + 1
senao
dir[x] := dir[x] + 1
fim
fim
pares = esq.zip(dir).mapeie(
a => se a.primeiro < a.segundo entao a.primeiro senao a.segundo fim
).injete(0)(_ + _ )
escreva pares
n := leia_inteiro
fim
1066 - Pares, Ímpares, Positivos e Negativos
numeros = leia_inteiros(5)
par(n: Inteiro) = n mod 2 == 0
positivo(n: Inteiro) = n > 0
negativo(n: Inteiro) = n < 0
pares = numeros.selecione(par).tamanho
impares = 5 - pares
positivos = numeros.selecione(positivo).tamanho
negativos = numeros.selecione(negativo).tamanho
escreva "{pares} valor(es) par(es)"
escreva "{impares} valor(es) impar(es)"
escreva "{positivos} valor(es) positivo(s)"
escreva "{negativos} valor(es) negativo(s)"
3159 - Tijolão
teclas(digito: Caractere): Texto = escolha digito
caso ' ' => "0"
caso d se d < 'a' => "#{teclas((d + 32).caractere)}"
caso d => escolha d
caso _ se d <= 'c' => "2" * (d - '`')
caso _ se d <= 'f' => "3" * (d - 'c')
caso _ se d <= 'i' => "4" * (d - 'f')
caso _ se d <= 'l' => "5" * (d - 'i')
caso _ se d <= 'o' => "6" * (d - 'l')
caso _ se d <= 's' => "7" * (d - 'o')
caso _ se d <= 'v' => "8" * (d - 's')
caso _ => "9" * (d - 'v')
fim
fim
n = leia_inteiro
para i de 1 ate n faca
linha = leia_texto
sequencia = linha.lista
.mapeie(teclas)
.divida_quando((a, b) => a[-1] == b[1])
.mapeie(_.junte(""))
.junte("*")
escreva sequencia
fim
2369 - Conta de Água
n = leia_inteiro
var conta := 7
se n > 10 então
conta := conta + (n - 10)
fim
se n > 30 então
conta := conta + (n - 30)
fim
se n > 100 então
conta := conta + (n - 100) * 3
fim
escreva conta
1015 - Distância Entre Dois Pontos
p1 = leia_reais(2)
x1, y1 = p1[1], p1[2]
p2 = leia_reais(2)
x2, y2 = p2[1], p2[2]
distancia = raiz((x1-x2)^2 + (y1-y2)^2)
escreva distancia formato "%.4f"
3241 - Ajude um Candidato a PhD!
n = leia_inteiro
para i de 1 ate n faca
s = leia_inteiros("+")
se s.tamanho == 1 entao
escreva "skipped"
senao
soma = s[1] + s[2]
escreva soma
fim
fim
1113 - Crescente e Decrescente
var n := leia_inteiros(" ")
enquanto n[1] <> n[2] faça
se n[1] > n[2] então
escreva "Decrescente"
senão
escreva "Crescente"
fim
n := leia_inteiros(" ")
fim
1000 - Hello World!
escreva "Hello World!"
2752 - Saída 6
escreva "<AMO FAZER EXERCICIO NO URI>"
escreva "< AMO FAZER EXERCICIO NO URI>"
escreva "<AMO FAZER EXERCICIO >"
escreva "<AMO FAZER EXERCICIO NO URI>"
escreva "<AMO FAZER EXERCICIO NO URI >"
escreva "<AMO FAZER EXERCICIO NO URI>"
escreva "< AMO FAZER EXERCICIO >"
escreva "<AMO FAZER EXERCICIO >"
1435 - Matriz Quadrada I
min(a, b:Inteiro) = se a > b então b senão a fim
var n := leia_inteiro
enquanto n <> 0 faça
para linha de 1 até n faça
a = min(linha, n - linha + 1)
escreva
para coluna de 1 até n gere
b = min(coluna, n - coluna + 1)
min(a, b) formato "%3d"
fim
.junte(" ")
fim
escreva ""
n := leia_inteiro
fim
2633 - Churras no Yuri
var n := leia_inteiro
enquanto nao eof faca
list = leia_textos(n)
.mapeie(_.divida(" "))
.mapeie(a => (a[1], a[2].inteiro))
.ordene(a => a.segundo)
.mapeie(a => a.primeiro)
escreva list.junte(" ")
n := leia_inteiro
fim
3142 - Excel Bugado
var s := leia_texto
enquanto nao eof faca
x = "@@" + s
se s.tamanho < 4 e x.inverta.pegue(3).inverta <= "XFD"
a = x.lista.mapeie(_ - '@')
n = a[-3] * 676 + a[-2] * 26 + a[-1]
escreva n
senao
escreva "Essa coluna nao existe Tobias!"
fim
s := leia_texto
fim
2390 - Escada Rolante
n = leia_inteiro
var tempo, anterior := 0, -1
para i de 1 até n faça
atual = leia_inteiro
dif = atual - anterior
se anterior <> -1 e dif < 10 então
tempo := tempo - (10 - dif)
fim
anterior := atual
tempo := tempo + 10
fim
escreva tempo
1250 - KiloMan
n = leia_inteiro
para i de 1 até n faça
t = leia_inteiro
tiros = leia_inteiros(" ")
ações = leia_texto
atingido =
para a em tiros.zip(ações)
se a.primeiro < 3 e a.segundo == 'S' ou
a.primeiro > 2 e a.segundo == 'J' gere 1 fim
escreva atingido.tamanho
fim
3348 - Jogo das Aranhas
numeros = ["2", "7", "5", "30", "169", "441", "1872", "7632",
"1740", "93313", "459901", "1358657", "2504881", "13482720",
"25779600", "68468401", "610346880", "1271932200", "327280800"]
escreva numeros[leia_inteiro]
2693 - Van
f = (a, b: (Texto, Texto, Inteiro)) =>
se a.terceiro <> b.terceiro entao
a.terceiro < b.terceiro
senaose a.segundo <> b.segundo entao
a.segundo < b.segundo
senao
a.primeiro < b. primeiro
fim
var q := leia_inteiro
enquanto q > 0 faca
alunos = Lista(q, leia_textos(" "))
.mapeie(a => (a[1], a[2], a[3].inteiro))
ordem = alunos.ordene(f)
escreva ordem.mapeie(_.primeiro).junte("\n")
q := leia_inteiro
fim
2984 - Assuntos Pendentes
s = leia_texto
var x := 0
para c em s faca
se c == '(' entao x := x + 1
senaose x > 0 e c == ')' entao x := x - 1
fim
fim
se x == 0 entao
escreva "Partiu RU!"
senao
escreva "Ainda temos {x} assunto(s) pendente(s)!"
fim
1973 - Jornada nas Estrelas
n = leia_inteiro
var x = leia_inteiros(" ").mutavel
var total := x.injete(BigInt(0))(_ + _)
var atacadas = Lista.mutavel(n, falso)
var i := 1
enquanto i > 0 e i <= n faca
lado = x[i] mod 2 <> 0
se x[i] > 0 entao
x[i] := x[i] - 1
atacadas[i] := verdadeiro
total := total - 1
fim
se lado entao
i := i + 1
senao
i := i - 1
fim
fim
escreva "{atacadas.selecione(_ == verdadeiro).tamanho} {total}"
1805 - Soma Natural
s = leia_reais(" ")
a, b = s[1], s[2]
soma = (a + b) * (b - a + 1) / 2
escreva soma formato "%.0f"
2867 - Dígitos
c = leia_inteiro
para i de 1 até c faça
entrada = leia_inteiros(" ")
n, m = entrada[1], entrada[2]
r = n ^ m
x = (r formato "%e").descarte_enquanto(_ <> '+').descarte(1).inteiro + 1
escreva x
fim
1340 - Eu Posso Adivinhar a Estrutura de Dados!
var n := leia_inteiro
enquanto nao eof faca
var pilha, fila, prioridade := Lista(0, 0)
var estrutura := Lista(4, 1)
estrutura[4] := 0
para i de 1 ate n faca
a = leia_inteiros(" ")
t, x = a[1], a[2]
se t == 1 entao
pilha := x :: pilha
fila := x :: fila
prioridade := x :: prioridade
senao # t == 2
fila := fila.inverta
prioridade := prioridade.ordene.inverta
se x <> fila.cabeca entao estrutura[1] := 0 fim
se x <> pilha.cabeca entao estrutura[2] := 0 fim
se x <> prioridade.cabeca entao estrutura[3] := 0 fim
se pilha == [] ou x <> fila.cabeca e x <> pilha.cabeca e x <> prioridade.cabeca entao estrutura[4] := 1 fim
pilha := pilha.cauda
fila := fila.cauda.inverta
prioridade := prioridade.cauda
fim
fim
resp = estrutura[1] + estrutura[2] * 2 + estrutura[3] * 4 + estrutura[4] * 8
escolha resp
caso 1 => escreva "queue"
caso 2 => escreva "stack"
caso 4 => escreva "priority queue"
caso s se s >= 8 => escreva "impossible"
caso _ => escreva "not sure"
fim
n := leia_inteiro
fim
1181 - Linha na Matriz
l = leia_inteiro
t = leia_texto
numeros = leia_reais(144)
var soma := 0.0
para i de l*12 + 1 até (l+1)*12 gere
soma := soma + numeros[i]
fim
se t == "S" então
escreva soma formato "%.1f"
senão
escreva (soma / 12) formato "%.1f"
fim
1551 - Frase Completa
n = leia_inteiro
para i de 1 até n faça
letras = Lista.mutável(26, 0)
s = leia_texto.selecione(c => c >= 'a' e c <= 'z').lista
para c em s faça
letras[c - 'a' + 1] := 1
fim
escolha letras.selecione(_ == 1).tamanho
caso 26 => escreva "frase completa"
caso x se x > 13 => escreva "frase quase completa"
caso _ => escreva "frase mal elaborada"
fim
fim
2582 - System of a Download
musicas = ["PROXYCITY","P.Y.N.G.","DNSUEY!","SERVERS",
"HOST!","CRIPTONIZE","OFFLINE DAY","SALT","ANSWER!",
"RAR?","WIFI ANTENNAS"]
n = leia_inteiro
para i de 1 até n faça
teclas = leia_inteiros(" ")
soma = teclas[1] + teclas[2] + 1
escreva musicas[soma]
fim
1049 - Animal
palavra1, palavra2, palavra3 = leia_texto
se palavra1 == "vertebrado" então
se palavra2 == "ave" então
se palavra3 == "carnivoro" então
escreva "aguia"
senão
escreva "pomba"
fim
senão
se palavra3 == "onivoro" então
escreva "homem"
senão
escreva "vaca"
fim
fim
senão
se palavra2 == "inseto" então
se palavra3 == "hematofago" então
escreva "pulga"
senão
escreva "lagarta"
fim
senão
se palavra3 == "hematofago" então
escreva "sanguessuga"
senão
escreva "minhoca"
fim
fim
fim
1076 - Desenhando Labirintos
t = leia_inteiro
para i de 1 até t faça
n = leia_inteiro
va = leia_inteiros(" ")
v, a = va[1], va[2]
var arestas := [1].cauda
para j de 1 até a faça
xy = leia_inteiros(" ")
x, y = xy[1], xy[2]
arestas := (x*v+y)::(y*v+x)::arestas
fim
escreva arestas.ordene.divida_quando(_ <> _).tamanho
fim
1873 - Pedra-papel-tesoura-lagarto-Spock
rajesh = [
"tesoura papel", "papel pedra", "pedra lagarto", "lagarto spock", "spock tesoura",
"tesoura lagarto", "lagarto papel", "papel spock", "spock pedra", "pedra tesoura"
]
empate = ["papel", "pedra", "tesoura", "lagarto", "spock"].mapeie(a => "{a} {a}")
c = leia_inteiro
para i de 1 ate c faca
s = leia_texto
se rajesh.contem(s) entao
escreva "rajesh"
senaose empate.contem(s) entao
escreva "empate"
senao
escreva "sheldon"
fim
fim
1166 - Torre de Hanoi, Novamente!
bolas = para i de 1 ate 50 gere (i + 1) * (i + 1) div 2 - 1 fim
t = leia_inteiro
para i de 1 ate t faca
n = leia_inteiro
escreva bolas[n]
fim
1467 - Zerinho ou Um
var s := leia_texto
enquanto nao eof faca
se s == "1 0 0" ou s == "0 1 1" entao
escreva "A"
senaose s == "0 1 0" ou s == "1 0 1" entao
escreva "B"
senaose s == "0 0 1" ou s == "1 1 0" entao
escreva "C"
senao
escreva "*"
fim
s := leia_texto
fim
3161 - As Frutas Esquecidas
a = leia_inteiros(" ")
n, m = a[1], a[2]
frutas = leia_textos(n).mapeie(_.minusculo)
linhas = leia_textos(m).mapeie(_.minusculo).junte(" ")
para fruta em frutas faca
se linhas.divida(fruta).tamanho > 1 ou
linhas.divida(fruta.inverta).tamanho > 1 entao
escreva "Sheldon come a fruta {fruta}"
senao
escreva "Sheldon detesta a fruta {fruta}"
fim
fim
1905 - Polícia e Ladrão
policia(labirinto, caminho: Lista[Inteiro]): Lógico =
se caminho.cabeça == 25 então
verdadeiro
senão
proximos = vizinhos(caminho.cabeca).selecione(a => labirinto[a] == '0') - caminho
proximos.injete(falso)((a, b) => a ou policia(labirinto, b :: caminho))
fim
vizinhos(n: Inteiro) =
[n + 5, se n mod 5 <> 0 entao n + 1 senao 0 fim,
se n mod 5 <> 1 então n - 1 senão 0 fim, n - 5].selecione(a => a >= 1 e a <= 25)
leia_labirinto()
var lista: Lista[Inteiro] = []
enquanto lista.tamanho < 25 faça
a = leia_texto.lista.selecione(c => c == '1' ou c == '0')
lista := lista + a
fim
lista
fim
t = leia_inteiro
para i de 1 até t faça
labirinto = leia_labirinto
se policia(labirinto, [-4]) então
escreva "COPS"
senão
escreva "ROBBERS"
fim
fim
1277 - Pouca Frequência
t = leia_inteiro
para i de 1 até t faça
n = leia_inteiro
nomes = leia_textos(" ")
frequencia = leia_textos(" ")
.mapeie(_.selecione(_ <> 'M'))
.mapeie(a => a.selecione(_ == 'P').tamanho / a.tamanho)
alunos = nomes.zip(frequencia)
a = alunos.selecione(_.segundo < 0.75).mapeie(_.primeiro)
escreva a.junte(" ")
fim
2234 - Cachorros-Quentes
entrada = leia_inteiros(" ")
a = entrada[1]
b = entrada[2]
escreva (a / b) formato "%.2f"
1134 - Tipo de Combustível
var n := leia_inteiro
var cont1, cont2, cont3 := 0
enquanto n <> 4 faça
escolha n
caso 1 => cont1 := cont1 + 1
caso 2 => cont2 := cont2 + 1
caso 3 => cont3 := cont3 + 1
caso _ =>
fim
n := leia_inteiro
fim
escreva "MUITO OBRIGADO"
escreva "Alcool: {cont1}"
escreva "Gasolina: {cont2}"
escreva "Diesel: {cont3}"
3146 - Charadas no Escuro
r = leia_real
pi = 3.14
circunferencia = 2 * pi * r
escreva circunferencia formato "%.2f"
2449 - Fechadura
n = leia_inteiros(2)
var res, i := 0, 1
var fechaduras := leia_inteiros(n[1])
enquanto i < n[1] faça
res := res + abs(n[2] - fechaduras[i])
se fechaduras[i] == fechaduras[i+1] então
i := i + 1
senão
fechaduras[i+1] := fechaduras[i+1] + (n[2] - fechaduras[i])
fim
i := i + 1
fim
escreva res
3048 - Sequência Secreta
n = leia_inteiro
var a, s := 0
para i de 1 ate n faca
v = leia_inteiro
se v <> a entao
a := v
s := s + 1
fim
fim
escreva s
1145 - Sequência Lógica 2
entrada = leia_inteiros(" ")
x = entrada[1]
y = entrada[2]
para i de 1 até y faça
imprima i
se i mod x == 0 ou i == y então
escreva ""
senão
imprima " "
fim
fim
2846 - Fibonot
var fib := [2, 1]
enquanto fib.cabeça < 200000 faça
fib := (fib[2]+fib[1]) :: fib
fim
fib := fib.inverta
n = leia_inteiro
var c := 0
para i de 1 até 100100 faça
se fib[1] == i então
fib := fib.cauda
senão
c := c + 1
se c == n então
escreva i
fim
fim
fim
1018 - Cédulas
# Potigol 0.9.15
total = leia_inteiro
valores = [100, 50, 20, 10, 5, 2, 1]
var resto := total
escreva total
para valor em valores faça
n = resto div valor
escreva "{n} nota(s) de R$ {valor},00"
resto := resto mod valor
fim
3278 - Passageiros de Trem
a = leia_inteiros(" ")
c, n = a[1], a[2]
var i, p:= 0
enquanto i < n e p >= 0 e p <= c faça
b = leia_inteiros(" ")
p := p - b[1]
se p >= 0 então
p := p + b[2]
se b[3] > 0 e p <> c então
p := -1
fim
fim
i := i + 1
fim
se p == 0 então
escreva "possible"
senão
escreva "impossible"
fim
2597 - Xenlongão
c = leia_inteiro
para i de 1 ate c faca
n = leia_inteiro
r = raiz(n).inteiro
a = n - r
escreva a
fim
1958 - Notação Científica
x = leia_real
escreva x formato "%+.4E"
2715 - Dividindo os Trabalhos I
diferenca(lista: Lista[Inteiro], soma, total: Long): Long =
se soma + lista.cabeça > total div 2 então
x = (soma + lista.cabeça) * 2 - total
y = total - soma * 2
se x < y entao x senao y fim
senão
diferenca(lista.cauda, soma + lista.cabeça, total)
fim
adição(x: Long, y: Int) = x + y
zero = 0.toLong
var n := leia_inteiro
enquanto nao eof faça
a = leia_inteiros(" ")
soma = a.injete(zero)(adição)
dif = diferenca(a, zero, soma)
escreva dif
n := leia_inteiro
fim
1961 - Pula Sapo
entrada = leia_inteiros(" ")
linha = leia_inteiros(" ")
p = entrada[1]
n = entrada[2]
var gameover := falso
para i de 2 até n faça
se linha[i-1] - linha[i] > p ou linha[i] - linha[i-1] > p então
gameover := verdadeiro
fim
fim
se gameover então
escreva "GAME OVER"
senão
escreva "YOU WIN"
fim
2661 - Despojados
descolado(x: Real) = se x == 1.0 então falso senão
var i := 2
r = raiz(x).inteiro
var primo, resultado := verdadeiro
enquanto i <= r e resultado faça
se x mod i^2 == 0.0 então
resultado := falso
senãose x mod i == 0.0
primo := falso
fim
i := i + 1
fim
resultado e primo
fim
n = leia_real
var resp := 0
para i de 1 até raiz(n).inteiro faça
se n mod i == 0.0 então
se descolado(i) então
resp := resp + 1
fim
se i <> n/i e descolado(n/i) então
resp := resp + 1
fim
fim
fim
escreva (2^resp - resp - 1).arredonde
3214 - Refrigerante
entrada = leia_inteiros(" ")
var g := entrada[1] + entrada[2]
c = entrada[3]
var resp := 0
enquanto g >= c faça
resp := resp + g div c
g := g div c + g mod c
fim
escreva resp
var flag := verdadeiro
enquanto flag faça
n = leia_inteiro
se n == 0 então
flag := falso
senão
var valores := leia_texto.divida(" ").mapeie(x => BigInt(x))
para i de n-1 até 1 passo -1,
j de n até i+1 passo -1 faça
valores[i] := valores[i] + valores[j]
fim
escreva valores.injete((a, b: BigInt) => a + b)
fim
fim
3129 - Figurinhas Repetidas
n = leia_inteiro
var figurinhas := Lista(300, falso)
para i de 1 ate n faca
numero = leia_inteiro
figurinhas[numero] := verdadeiro
fim
diferentes = figurinhas.selecione(_ == verdadeiro).tamanho
escreva diferentes
escreva n - diferentes
1547 - Adivinha
n = leia_inteiro
para i de 1 até n faça
a = leia_inteiros(" ")
s = a[2]
nums = leia_inteiros(" ")
var p, i, diff := 0, 0, 100
para x em nums faça
i := i + 1
se (s - x).abs < diff entao
p := i
diff := (s - x).abs
fim
fim
escreva p
fim
1003 - Soma Simples
a = leia_inteiro
b = leia_inteiro
soma = (a + b)
escreva "SOMA = {soma}"
1516 - Imagem
var x := leia_inteiros(" ")
enquanto x[1] > 0 faca
n, m = x[1], x[2]
linhas = leia_textos(n)
y = leia_inteiros(" ")
a, b = y[1], y[2]
s = linhas.mapeie(_.lista.mapeie(c => "{c}" * (b div m)).junte(""))
para i de 0 ate a - 1 faca
escreva s[i div (a div n) + 1]
fim
escreva ""
x := leia_inteiros(" ")
fim
2863 - Umil Bolt
var t := leia_inteiro
enquanto t > 0 faca
var melhor := leia_real
para i de 2 ate t faca
tempo = leia_real
se tempo < melhor entao
melhor := tempo
fim
fim
escreva melhor formato "%.2f"
t := leia_inteiro
fim
3315 - Língua do Computador
d2b(n: Inteiro): Texto = se n > 0 entao "{d2b(n div 2)}{n mod 2}" senao "" fim
a = para i de 1 ate 4 gere
leia_inteiros(" ").injete(0)(_ + _)
fim
d = a.ordene[-1]
escreva "{d} = {d2b(d)}"
2397 - Triângulos
lados = leia_inteiros(" ").ordene
a, b, c = lados[1], lados[2], lados[3]
d = c * c - (a * a + b * b)
escolha d
caso d se d >= 2 * a * b => escreva "n"
caso d se d > 0 => escreva "o"
caso d se d < 0 => escreva "a"
caso _ => escreva "r"
fim
1025 - Onde está o Mármore?
var entrada := leia_inteiros(" ")
var t := 1
enquanto entrada[1] <> 0 faça
n, q = entrada[1], entrada[2]
var marmores := Lista(10000, 0)
para i de 1 ate n faca
x = leia_inteiro + 1
marmores[x] := marmores[x] + 1
fim
para i de 2 ate 10000 faca
marmores[i] := marmores[i] + marmores[i - 1]
fim
escreva "CASE# {t}:"
t := t + 1
para i de 1 ate q faca
x = leia_inteiro
se marmores[x + 1] == marmores[x] entao
escreva "{x} not found"
senao
escreva "{x} found at {marmores[x] + 1}"
fim
fim
entrada := leia_inteiros(" ")
fim
1070 - Seis Números Ímpares
n = leia_inteiro
inicio = se n mod 2 == 1 então n senão n + 1 fim
para i de 0 até 5 faça
escreva inicio + i * 2
fim
2375 - Sedex
n = leia_inteiro
entrada = leia_inteiros(" ")
a = entrada[1]
b = entrada[2]
c = entrada[3]
se n <= a e n <= b e n <= c então
escreva "S"
senão
escreva "N"
fim
1156 - Sequência S II
escreva "6.00"
1225 - Coral Perfeito
var n := leia_inteiro
enquanto n > 0 faca
notas = leia_inteiros(" ")
soma = notas.injete(0)(_ + _)
se soma mod n == 0 entao
media = soma div n
resposta = 1 + notas.descarte_enquanto(_ < media).mapeie(_ - media).injete(0)(_ + _)
escreva resposta
senao
escreva -1
fim
n := leia_inteiro
fim
2060 - Desafio de Bino
n = leia_inteiro
lista = leia_inteiros(" ")
m2 = lista.selecione(x => x mod 2 == 0).tamanho
m3 = lista.selecione(x => x mod 3 == 0).tamanho
m4 = lista.selecione(x => x mod 4 == 0).tamanho
m5 = lista.selecione(x => x mod 5 == 0).tamanho
escreva "{m2} Multiplo(s) de 2"
escreva "{m3} Multiplo(s) de 3"
escreva "{m4} Multiplo(s) de 4"
escreva "{m5} Multiplo(s) de 5"
1743 - Máquina de Verificação Automatizada
x, y = leia_texto
var compativel := verdadeiro
para i de 1 ate 9 passo 2 faca
se x[i] == y[i] entao compativel := falso fim
fim
se compativel então
escreva "Y"
senão
escreva "N"
fim
1566 - Altura
tipo Num numero: Inteiro quantidade: Inteiro fim
min(x, y: Inteiro) = se x < y então x senão y fim
f(entrada: Texto, p:Inteiro) = entrada.pegue(p - 1)
.divida(" ")
.ordene
.divida_quando(_ <> _)
.mapeie(a => Num(a.cabeça.inteiro, a.tamanho))
g(nums: Lista[Num]) = nums.ordene(_.numero)
.divida_quando(_.numero <> _.numero)
.mapeie(a => Num(a.cabeça.numero, a.injete(0)(_ + _.quantidade)))
nc = leia_inteiro
para i de 1 até nc faça
var n := leia_inteiro
var entrada := leia_texto + " "
var result := Lista(0, Num(0, 0))
enquanto entrada <> "" faça
var p := min(50000, entrada.tamanho)
enquanto entrada[p] <> ' ' e p < entrada.tamanho faça p := p + 1 fim
result := result + f(entrada, p)
entrada := entrada.descarte(p)
fim
result := g(result)
imprima result[1].numero
result[1] := Num(result[1].numero, result[1].quantidade - 1)
para r em result faça
imprima " {r.numero}" * (r.quantidade)
fim
escreva ""
fim
2143 - A Volta do Radar
var t := leia_inteiro
enquanto t > 0 faca
para i de 1 ate t faca
n = leia_inteiro
se n mod 2 == 0 entao
escreva 2 * n - 2
senao
escreva n div 2 * 4 + 1
fim
fim
t := leia_inteiro
fim
2588 - Jogo dos Palíndromos
var s:= leia_texto
enquanto não eof faça
letras = s.ordene
.divida_quando(_ <> _)
.selecione(a => a.tamanho mod 2 == 1)
.tamanho - 1
se letras >= 0
então escreva letras
senão escreva 0
fim
s:= leia_texto
fim
2518 - Escada do DINF
var n := leia_inteiro
enquanto n > 0 faça
medida = leia_inteiros(" ")
h, c, l = medida[1], medida[2], medida[3]
area = n * l * raiz(h ^ 2 + c ^ 2) / 10000
escreva area formato "%.4f"
n := leia_inteiro
fim
2175 - Qual o Mais Rápido?
a = leia_reais(" ")
o, b, i = a[1], a[2], a[3]
se o < b e o < i entao
escreva "Otavio"
senaose b < o e b < i entao
escreva "Bruno"
senaose i < o e i < b entao
escreva "Ian"
senao
escreva "Empate"
fim
3209 - Tomadas Elétricas
n = leia_inteiro
para i de 1 ate n faca
num = leia_inteiros(" ")
tomadas = num.cauda.injete(0)(_ + _) - num.cabeca + 1
escreva tomadas
fim
3058 - Supermercado
n = leia_inteiro
var menor := 10000000.0
para i de 1 ate n faca
a = leia_reais(" ")
p, g = a[1], a[2]
valor = p * 1000 / g
se valor < menor entao menor := valor fim
fim
escreva menor formato "%.2f"
2386 - Telescópio
a, n = leia_inteiro
z = 40000000 / a
var soma := 0
para i de 1 ate n faca
f = leia_inteiro
se f >= z entao
soma := soma + 1
fim
fim
escreva soma
1267 - Biblioteca Pascal
var entrada := leia_inteiros(" ")
enquanto entrada <> [0, 0] faça
n = entrada[2]
var linhas := Lista(n, leia_inteiros(" "))
var todos := falso
enquanto (não todos) e (linhas[1] <> []) faça
todos := linhas.mapeie(_.cabeça).injete(verdadeiro)((a, b) => a e b == 1)
linhas := linhas.mapeie(_.cauda)
fim
se todos então escreva "yes" senão escreva "no" fim
entrada := leia_inteiros(" ")
fim
2850 - Papagaio Poliglota
var a := leia_texto
enquanto nao eof faça
escolha a[1]
caso 'e' => escreva "ingles"
caso 'd' => escreva "frances"
caso 'n' => escreva "portugues"
caso _ => escreva "caiu"
fim
a := leia_texto
fim
s = leia_texto
se s.tamanho <= 80 então
escreva "YES"
senão
escreva "NO"
fim
1098 - Sequencia IJ 4
para i de 0 até 1,
p em ["", ".2", ".4", ".6", ".8"],
j de 1 até 3 faça
escreva "I={i}{p} J={i+j}{p}"
fim
escreva "I=2 J=3"
escreva "I=2 J=4"
escreva "I=2 J=5"
2831 - Pesos
leia_inteiro
pesos = leia_inteiros(" ")
dif = pesos.zip(0 :: pesos)
.mapeie(a => a.primeiro - a.segundo)
.injete(verdadeiro)((b, v) => b e v <= 8)
se dif entao
escreva "S"
senao
escreva "N"
fim
2569 - A Bruxa do 7 x 1
entrada = leia_textos(" ")
a = entrada[1].mapeie(a => se a == '7' então '0' senão a fim).inteiro
b = entrada[3].mapeie(a => se a == '7' então '0' senão a fim).inteiro
c = se entrada[2] == "+" então a + b senão a * b fim
escreva c.texto.mapeie(a => se a == '7' então '0' senão a fim).inteiro
1038 - Lanche
entrada = leia_inteiros(2)
preco = [4.0,4.5,5.0,2.0,1.5]
valor = preco[entrada[1]]*entrada[2]
escreva "Total: R$ " + (valor formato "%.2f")
3344 - Brute
escreva "4"
1901 - Borboletas
n = leia_inteiro
k = para i de 1 até n gere leia_inteiros(" ") fim
var v := [0].cauda
para i de 1 até 2*n faça
a = leia_inteiros(" ")
v := k[a[1]][a[2]] :: v
fim
especies = v.ordene.divida_quando(_ <> _).tamanho
escreva especies
2747 - Saída 1
escreva "---------------------------------------"
escreva "| |"
escreva "| |"
escreva "| |"
escreva "| |"
escreva "| |"
escreva "---------------------------------------"
1987 - Divisibilidade Por 3
# eof = falso
var entrada := leia_texto
enquanto nao eof faça
numeros = entrada.divida()[2]
soma = numeros.injete(0)((x, y) => x + y) - 48 * numeros.tamanho
se soma mod 3 == 0 então
escreva "{soma} sim"
senão
escreva "{soma} nao"
fim
entrada := leia_texto
fim
2454 - Flíper
entrada = leia_inteiros(" ")
p = entrada[1]
r = entrada[2]
se p == 0 então
escreva "C"
senãose r == 0 então
escreva "B"
senão
escreva "A"
fim
2165 - Tuitando
n = leia_texto
se n.tamanho <= 140 então
escreva "TWEET"
senão
escreva "MUTE"
fim
1300 - Horas e Minutos
var angulo := leia_inteiro
enquanto nao eof faça
se angulo mod 6 == 0 entao
escreva "Y"
senao
escreva "N"
fim
angulo := leia_inteiro
fim
1188 - Área Inferior
o = leia_texto
nums = leia_reais(144)
var soma := 0.0
para i de 0 até 11, j de 13 - i até i faça
soma := soma + nums[i * 12 + j]
fim
se o == "S" então
escreva soma formato "%.1f"
senão
escreva soma / 30 formato "%.1f"
fim
1186 - Abaixo da Diagonal Secundária
o = leia_texto
nums = leia_reais(144)
var soma := 0.0
para i de 0 até 11, j de 13 - i até 12 faça
soma := soma + nums[i * 12 + j]
fim
se o == "S" então
escreva soma formato "%.1f"
senão
escreva soma / 66 formato "%.1f"
fim
1869 - Base 32
digito(n: BigInt) =
se n > 9 entao (n.toInt + 55).caractere senao (n.toInt + 48).caractere fim
base32(n: BigInt): Texto =
se n > 0 entao base32(n div 32) + digito(n mod 32) senao "" fim
var a := BigInt(1)
enquanto a > 0 faca
a := BigInt(leia_texto)
se a > 0 entao escreva base32(a) senao escreva 0 fim
fim
3475 - Conversor
numeros = ["zero", "um", "dois", "tres", "quatro",
"cinco","seis", "sete", "oito", "nove"]
a = leia_texto
p = numeros.posicao(a) - 1
n = numeros[a.inteiro + 1]
se p >= 0 então
escreva p
senão
escreva n
fim
1262 - Leitura Múltipla
var s := leia_texto
enquanto nao eof faca
p = leia_inteiro
x = s.divida_quando(_ <> _)
y = x.mapeie(a => se a[1] == 'W' entao a.tamanho senao (a.tamanho / p).teto.inteiro fim)
escreva y.injete(0)(_ + _)
s := leia_texto
fim
1235 - De Dentro para Fora
n = leia_inteiro
para i de 1 ate n faca
linha = leia_texto
t = linha.tamanho div 2
s = linha.pegue(t)
r = linha.descarte(t)
escreva "{s.inverta}{r.inverta}"
fim
1980 - Embaralhando
fat(n: Inteiro): BigInt = se n > 1 então fat(n-1) * n senão 1 fim
var s := leia_texto
enquanto s <> "0" faça
letras_repetidas = s.ordene.divida_quando(_ <> _).mapeie(_.tamanho).selecione(_ > 1).ordene
anagramas = letras_repetidas.injete(fat(s.tamanho))((a, b) => a div fat(b))
escreva(anagramas)
s := leia_texto
fim
1763 - Tradutor do Papai Noel
natal = [
("alemanha", "Frohliche Weihnachten!"),
("antardida", "Merry Christmas!"),
("argentina", "Feliz Navidad!"),
("australia", "Merry Christmas!"),
("austria", "Frohe Weihnacht!"),
("belgica", "Zalig Kerstfeest!"),
("brasil", "Feliz Natal!"),
("canada", "Merry Christmas!"),
("chile", "Feliz Navidad!"),
("coreia", "Chuk Sung Tan!"),
("espanha", "Feliz Navidad!"),
("estados-unidos", "Merry Christmas!"),
("grecia", "Kala Christougena!"),
("inglaterra", "Merry Christmas!"),
("irlanda", "Nollaig Shona Dhuit!"),
("italia", "Buon Natale!"),
("japao", "Merii Kurisumasu!"),
("libia", "Buon Natale!"),
("marrocos", "Milad Mubarak!"),
("mexico", "Feliz Navidad!"),
("portugal", "Feliz Natal!"),
("siria", "Milad Mubarak!"),
("suecia", "God Jul!"),
("turquia", "Mutlu Noeller")
]
var pais := leia_texto
enquanto nao eof faca
x = natal.selecione(a => a.primeiro == pais)
escolha x
caso a :: as => escreva a.segundo
caso _ => escreva "--- NOT FOUND ---"
fim
pais := leia_texto
fim
2322 - Peça Perdida
n = leia_inteiro
nums = (0 :: (n + 1) :: leia_inteiros(" ")).ordene
escreva nums.divida_quando((a, b) => b - a > 1)[2].cabeça - 1
2486 - C Mais ou Menos?
var t := leia_inteiro
enquanto t > 0 faça
var total := 0
para i de 1 até t faça
a = leia_textos(" ")
peso = escolha a.descarte(1).junte(" ")
caso "suco de laranja" => 120
caso "morango fresco" => 85
caso "mamao" => 85
caso "goiaba vermelha" => 70
caso "manga" => 56
caso "laranja" => 50
caso "brocolis" => 34
caso _ => 0
fim
total := total + a[1].inteiro * peso
fim
se total > 130 então
escreva "Menos {total - 130} mg"
senãose total < 110 então
escreva "Mais {110 - total} mg"
senão
escreva "{total} mg"
fim
t := leia_inteiro
fim
3412 - Avaliações de Algoritmos
n = leia_inteiro
para i de 1 até n faça
nome = leia_texto
notas = leia_reais(" ")
maiores = notas.pegue(3).ordene.inverta
media = escolha notas.tamanho
caso 1 => (notas[1] + 0) / 2
caso 2 => (notas[1] + notas[2]) / 2
caso 4 se notas[4] > maiores[3] => (maiores[1] + maiores[2] + notas[4]) / 3
caso _ => (notas[1] + notas[2] + notas[3]) / 3
fim
escreva "{nome}: {media formato "%.1f"}"
fim
3174 - Grupo de Trabalho do Noel
var bonecos, arquitetos, musicos, desenhistas := 0
n = leia_inteiro
para i de 1 ate n faca
a = leia_textos(" ")
grupo = a[2]
horas = a[3].inteiro
escolha grupo
caso "bonecos" => bonecos := bonecos + horas
caso "arquitetos" => arquitetos := arquitetos + horas
caso "musicos" => musicos := musicos + horas
caso "desenhistas" => desenhistas := desenhistas + horas
caso _ =>
fim
fim
escreva bonecos div 8 + arquitetos div 4 + musicos div 6 + desenhistas div 12
2044 - Em Dívida
enquanto leia_inteiro > 0 faca
p = leia_inteiros(" ")
var soma, d := 0
para a em p faca
soma := (soma + a) mod 100
se soma == 0 entao d := d + 1 fim
fim
escreva d
fim
1285 - Dígitos Diferentes
sem_repeticao(n: Inteiro)
a = n.texto.ordene.lista
b = a.zip(a.cauda)
b.selecione(x => x.primeiro == x.segundo).tamanho == 0
fim
var c := 0
numeros = para i de 1 ate 5001 gere
d = c
se sem_repeticao(i) entao c:= c + 1 fim
d
fim
var a := leia_texto
enquanto nao eof faca
z = a.divida(" ")
n, m = z[1].inteiro, z[2].inteiro
escreva numeros[m+1] - numeros[n]
a := leia_texto
fim
1218 - Getline Three - Calçados
var c := 0
var n := leia_texto
enquanto nao eof faca
c := c + 1
entrada = leia_textos(" ")
pares = entrada.zip(entrada.cauda).selecione(a => a.primeiro == n)
feminino = pares.selecione(a => a.segundo == "F").tamanho
masculino = pares.tamanho - feminino
se c > 1 entao escreva "" fim
escreva "Caso {c}:"
escreva "Pares Iguais: {feminino + masculino}"
escreva "F: {feminino}"
escreva "M: {masculino}"
n := leia_texto
fim
1220 - A Viagem
var n := leia_inteiro
var N := Lista.mutável(1000, 0)
enquanto (n <> 0) faca
var total := 0.0
para i de 1 até n faca
var numero := leia_textos(".")
var inteiro := numero[1].inteiro * 100
var decimal := numero[2].inteiro
N[i] := decimal + inteiro
total := total + N[i]
fim
total := (total / n)
var valorMenor := 0.0
var valorMaior := 0.0
para l de 1 até n faca
se N[l] < total entao
valorMenor := valorMenor + (total - N[l]).inteiro / 100.0
senao
valorMaior := valorMaior + (N[l] - total).inteiro / 100.0
fim
fim
se (valorMenor > valorMaior) entao
escreva "${valorMenor formato "%.2f"}"
senao
escreva "${valorMaior formato "%.2f"}"
fim
n := leia_inteiro
fim
2579 - Nagol
a = leia_inteiros(" ")
l, c, x, y = a[1], a[2], a[3], a[4]
se (x mod 2 == 0) ou (c mod 2 == 0) entao
se y mod 2 == 0 entao
escreva "Direita"
senao
escreva "Esquerda"
fim
senao
se y mod 2 == 0 entao
escreva "Esquerda"
senao
escreva "Direita"
fim
fim
2939 - Casais
n = leia_inteiro
var a, b := BigInt(16), BigInt(2)
para i de 2 até n faça
a, b := 2 * (i + 1) * (a + b * 2 * i) mod 1000000007, a
fim
escreva b
2247 - Cofrinhos da Vó Vitória
var n := leia_inteiro
var teste := 0
enquanto n > 0 faça
teste := teste + 1
escreva "Teste {teste}"
var diferença := 0
para i de 1 até n faça
moedas = leia_inteiros(" ")
diferença := diferença + moedas[1] - moedas[2]
escreva diferença
fim
escreva ""
n := leia_inteiro
fim
1766 - O Elfo das Trevas
tipo Rena
nome: Texto
peso: Inteiro
idade: Inteiro
altura: Real
fim
lt = (r1, r2: Rena) =>
se r1.peso <> r2.peso entao
r1.peso > r2.peso
senaose r1.idade <> r2.idade entao
r1.idade < r2.idade
senao
r1.altura < r2.altura
fim
t = leia_inteiro
para i de 1 ate t faca
a = leia_inteiros(" ")
n, m = a[1], a[2]
renas = para i de 1 ate n gere
b = leia_textos(" ")
Rena(b[1], b[2].inteiro, b[3].inteiro, b[4].real)
fim
treno = renas.ordene(lt)
escreva "CENARIO {'{'}{i}{'}'}"
para j de 1 ate m faca
escreva "{j} - {treno[j].nome}"
fim
fim
1898 - Soma de Propina
numerico(c: Caractere) = c >= '0' e c <= '9' ou c == '.'
linha1, linha2 = leia_texto.selecione(numerico)
cpf = linha1.pegue(11)
n1 = (linha1.descarte(11).real * 100).piso / 100
n2 = (linha2.real * 100).piso / 100
soma = n1 + n2
escreva "cpf {cpf}"
escreva soma formato "%.2f"
1849 - Dracarys!
min(x, y: Inteiro) = se x < y então x senão y fim
max(x, y: Inteiro) = se x > y então x senão y fim
n = leia_inteiros(4)
escreva (min(min(n[1], n[2]) + min(n[3], n[4]), min(max(n[1], n[2]), max(n[3], n[4]))) ^ 2).inteiro
1257 - Array Hash
n = leia_inteiro
para i de 1 até n faça
l = leia_inteiro
var soma := 0
para j de 0 até l-1 faça
s = leia_texto.lista.mapeie(c => c - 'A')
para k de 0 até s.tamanho - 1 faça
soma := soma + s[k+1] + k + j
fim
fim
escreva soma
fim
1536 - Libertadores
n = leia_inteiro
para i de 1 ate n faça
a, b = leia_inteiros(" ")
se a == b então
escreva "Penaltis"
senaose a[1]+b[3] > a[3]+b[1] então
escreva "Time 1"
senaose a[1]+b[3] < a[3]+b[1] então
escreva "Time 2"
senaose b[3] > a[3] então
escreva "Time 1"
senão
escreva "Time 2"
fim
fim
1802 - Catálogo de Livros
soma(a, b: Inteiro) = a + b
p, m, f, q, b = leia_inteiros(" ").cauda
k = leia_inteiro
conjuntos = para pi em p, mi em m, fi em f,
qi em q, bi em b gere
pi + mi + fi + qi + bi
fim.ordene.inverta
total = conjuntos.pegue(k).injete(0)(soma)
escreva total
2543 - Jogatina UFPR
var entrada := leia_texto
enquanto nao eof faça
n, l = entrada.divida(" ")[1].inteiro, entrada.divida(" ")[2]
var cont := 0
s = "{l} 0"
para a de 1 até n faça
linha = leia_texto
se linha == s então
cont := cont + 1
fim
fim
escreva cont
entrada := leia_texto
fim
1221 - Primo Rápido
primo(a: Inteiro)
var resp := a > 1
para i de 2 até raiz(a).arredonde faça
se a mod i == 0 então
resp := falso
fim
fim
retorne resp
fim
n = leia_inteiro
para i de 1 até n faça
x = leia_inteiro
se primo(x) entao
escreva "Prime"
senão
escreva "Not Prime"
fim
fim
1052 - Mês
meses = "January February March April May June July August September October November December".divida(" ")
n = leia_inteiro
escreva meses[n]
3224 - Aaah!
a, b = leia_texto
se a.tamanho >= b.tamanho entao
escreva "go"
senao
escreva "no"
fim
1585 - Fazendo Pandorgas
n = leia_inteiro
para i de 1 ate n faca
a = leia_texto
tamanho = se a[3] == ' ' entao
a.pegue(2).inteiro * a.descarte(3).inteiro div 2
senao
a.pegue(3).inteiro * a.descarte(4).inteiro div 2
fim
escreva "{tamanho} cm2"
fim
1094 - Experiências
n = leia_inteiro
var coelhos, sapos, ratos := 0
para i de 1 até n faça
entrada = leia_textos(" ")
qtd = entrada[1].inteiro
tpo = entrada[2]
escolha tpo
caso "C" => coelhos := coelhos + qtd
caso "S" => sapos := sapos + qtd
caso "R" => ratos := ratos + qtd
fim
fim
cobaias = coelhos + sapos + ratos
escreva "Total: {cobaias} cobaias"
escreva "Total de coelhos: {coelhos}"
escreva "Total de ratos: {ratos}"
escreva "Total de sapos: {sapos}"
escreva "Percentual de coelhos: {coelhos * 100 / cobaias formato "%.2f"} %"
escreva "Percentual de ratos: {ratos * 100 / cobaias formato "%.2f"} %"
escreva "Percentual de sapos: {sapos * 100 / cobaias formato "%.2f"} %"
1140 - Flores Florescem da França
var frase := leia_texto
enquanto frase <> "*" faca
palavras = frase.maiúsculo.divida(" ")
primeira = palavras[1].cabeca
tamanho = palavras.tamanho
var tautograma, i := verdadeiro, 1
enquanto tautograma e i <= tamanho faca
tautograma := palavras[i].cabeca == primeira
i := i + 1
fim
# tautograma = palavras.mapeie(_.cabeca == primeira).injete(verdadeiro)(_ e _)
se tautograma entao
escreva "Y"
senao
escreva "N"
fim
frase := leia_texto
fim
3024 - Mountain Ranges
in = leia_inteiros(" ")
n, x = in[1], in[2]
l = leia_inteiros(" ")
var r, p := 1
para i de 2 até n faça
se l[i] - l[i-1] <= x então
p := p + 1
se p > r então r := p fim
senão
p := 1
fim
fim
escreva r
3117 - Atrasadinhos
k = leia_inteiros(" ")[2]
a = leia_inteiros(" ").selecione(_ <= 0).tamanho
se a >= k entao
escreva "YES"
senao
escreva "NO"
fim
2949 - A Sociedade do Anel
n = leia_inteiro
var anoes, elfos, humanos, magos, hobbits := 0
para i de 1 até n faça
a = leia_textos(" ")[2]
escolha a
caso "A" => anoes := anoes + 1
caso "E" => elfos := elfos + 1
caso "H" => humanos := humanos + 1
caso "M" => magos := magos + 1
caso "X" => hobbits := hobbits + 1
caso _ =>
fim
fim
escreva "{hobbits} Hobbit(s)"
escreva "{humanos} Humano(s)"
escreva "{elfos} Elfo(s)"
escreva "{anoes} Anao(s)"
escreva "{magos} Mago(s)"
2722 - Pegadinha de Evergreen
n = leia_inteiro
para i de 1 até n faça
a, b = leia_texto
para j de 0 até a.tamanho passo 2 faça
imprima a.descarte(j).pegue(2)
imprima b.descarte(j).pegue(2)
fim
escreva ""
fim
1008 - Salário
n = leia_inteiro
h = leia_inteiro
s_h = leia_real
s = h * s_h
escreva "NUMBER = {n}"
escreva "SALARY = U$ {s formato "%.2f"}"
2728 - Grace Hopper, a Vovó do Cobol
var s := leia_texto
enquanto nao eof faca
a = s.minusculo.divida("-")
cobol = (a[1][1] == 'c' ou a[1][-1] == 'c') e
(a[2][1] == 'o' ou a[2][-1] == 'o') e
(a[3][1] == 'b' ou a[3][-1] == 'b') e
(a[4][1] == 'o' ou a[4][-1] == 'o') e
(a[5][1] == 'l' ou a[5][-1] == 'l')
se cobol então
escreva "GRACE HOPPER"
senão
escreva "BUG"
fim
s := leia_texto
fim
2807 - Iccanobif
n = leia_inteiro
var iccanobif := se n > 1 então [1, 1] senão [1] fim
para i de 3 até n faça
a, b = iccanobif[1], iccanobif[2]
iccanobif := (a + b) :: iccanobif
fim
escreva iccanobif.junte(" ")
1272 - Mensagem Oculta
n = leia_inteiro
para i de 1 ate n faca
s = leia_textos(" ").selecione(_ <> "")
r = s.mapeie(_[1]).junte("")
escreva r
fim
2584 - Pentágono
c = leia_inteiro
const = 5 / 4 / tg(PI / 5)
para i de 1 ate c faca
n = leia_inteiro
area = const * n ^ 2
escreva area formato "%.3f"
fim
3398 - Moeda Convertida
n, m = leia_real
valor = n * m
escreva valor formato "%.2f"
1240 - Encaixa ou Não I
n = leia_inteiro
para i de 1 ate n faca
s = leia_textos(" ")
a, b = s[1], s[2]
se a.descarte(a.tamanho - b.tamanho) == b entao
escreva "encaixa"
senão
escreva "nao encaixa"
fim
fim
3433 - Jogando 23
menor(a, b: Inteiro) = se a < b então a senão b fim
soma(lista: Lista[Inteiro]) =
lista.mapeie(a => menor(a, 10)).injete(0)(_ + _)
cartas_disponiveis(lista: Lista[Inteiro]) =
(para i de 1 ate 13, j de 1 ate 4 gere i fim - lista)
.ordene.divida_quando(_ <> _).mapeie(_.cabeça)
n = leia_inteiro
j, m, comum = leia_inteiros(" ")
joao = soma(j + comum)
maria = soma(m + comum)
cartas = cartas_disponiveis(j + m + comum)
var carta := -1
para c em cartas.inverta faca
se maria + menor(c, 10) == 23 ou
maria + menor(c, 10) < 23 e joao + menor(c, 10) > 23 então
carta := c
fim
fim
escreva carta
2479 - Ordenando a Lista de Crianças do Papai Noel
n = leia_inteiro
lista = leia_textos(n).mapeie(a => a.divida(" "))
nomes = lista.mapeie(a => a[2]).ordene
comportados = lista.selecione(a => a[1] == "+").tamanho
escreva nomes.junte("\n")
escreva "Se comportaram: {comportados} | Nao se comportaram: {n - comportados}"
1553 - Perguntas mais Frequentes
var k := leia_inteiros(" ")[2]
enquanto k > 0 faça
p = leia_inteiros(" ")
.ordene
.divida_quando((a,b) => a <> b)
.selecione(_.tamanho >= k)
.tamanho
escreva p
k := leia_inteiros(" ")[2]
fim
2435 - Corrida
a, b = leia_inteiros(" ")
se a[2] / a[3] < b[2] / b[3] entao
escreva a[1]
senao
escreva b[1]
fim
2760 - Entrada e Saída de String
a, b, c = leia_texto
escreva "{a}{b}{c}"
escreva "{b}{c}{a}"
escreva "{c}{a}{b}"
escreva "{a.pegue(10)}{b.pegue(10)}{c.pegue(10)}"
3139 - Buscando Novos Seguidores
entrada = leia_inteiros(" ")
n, m = entrada[1], entrada[2]
var d := leia_inteiros(" ").mutavel
var falta := m - n
var soma := d.injete(0)(_ + _)
var i := 0
enquanto falta > 0 faca
se d.divida_quando(_ <> _).tamanho == 1 entao
i := i + (falta / d.cabeca).teto.inteiro
falta := 0
senao
proximo = (soma / 30).teto.inteiro
soma := soma - d.cabeca + proximo
falta := falta - proximo
d := d.cauda + [proximo]
i := i + 1
fim
fim
escreva i
2626 - Turma do JB6
dodo = "Os atributos dos monstros vao ser inteligencia, sabedoria..."
leo = "Iron Maiden's gonna get you, no matter how far!"
pepper = "Urano perdeu algo muito precioso..."
empate = "Putz vei, o Leo ta demorando muito pra jogar..."
var a := leia_texto
enquanto nao eof faca
resultado = escolha a
caso "pedra tesoura tesoura" => dodo
caso "papel pedra pedra" => dodo
caso "tesoura papel papel" => dodo
caso "tesoura pedra tesoura" => leo
caso "pedra papel pedra" => leo
caso "papel tesoura papel" => leo
caso "tesoura tesoura pedra" => pepper
caso "pedra pedra papel" => pepper
caso "papel papel tesoura" => pepper
caso _ => empate
fim
escreva resultado
a := leia_texto
fim
1084 - Apagando e Ganhando
var entrada := leia_inteiros(" ")
enquanto entrada <> [0, 0] faça
var d := entrada[2]
linha = leia_texto
var s := ['a']
para i de 1 até linha.tamanho faça
enquanto d > 0 e s.cabeça < linha[i] faça
s := s.cauda
d := d - 1
fim
s := linha[i] :: s
fim
s := s.descarte(d)
escreva s.inverta.descarte(1).junte("")
entrada := leia_inteiros(" ")
fim
3092 - Truco da Galera 2.0
n = leia_inteiro
para i de 1 ate n faca
s = leia_texto
var q, j, k, a := 0
para c em s faca
escolha c
caso 'Q' => q := q + 1
caso 'J' se j < q => j := j + 1
caso 'K' se k < j => k := k + 1
caso 'A' se a < k => a := a + 1
caso _ =>
fim
fim
se a > 0 entao
escreva "Agora vai"
senao
escreva "Agora apertou sem abracar"
fim
fim
1180 - Menor e Posição
n = leia_inteiro
num = leia_inteiros(" ")
menor = num.ordene.primeiro
posição = num.posição(menor) - 1
escreva "Menor valor: {menor}"
escreva "Posicao: {posição}"
3171 - Cordão de Led
a = leia_inteiros(" ")
conectado()
var ligados := leia_inteiros(" ")
var cordoes := para i de 2 ate a[2] gere leia_inteiros(" ") fim
var b := cordoes.selecione(x => ligados.contem(x[1]) ou ligados.contem(x[2]))
enquanto b.tamanho > 0 faça
ligados := para c em b, d em c gere d fim + ligados
cordoes := cordoes - b
b := cordoes.selecione(x => ligados.contem(x[1]) ou ligados.contem(x[2]))
fim
retorne cordoes.tamanho == 0
fim
se a[1] - a[2] == 1 e conectado então
escreva "COMPLETO"
senão
escreva "INCOMPLETO"
fim
1157 - Divisores I
n = abs(leia_inteiro)
para i de 1 até n se n mod i == 0 faça
escreva i
fim
2310 - Voleibol
n = leia_inteiro
var tentativas, sucesso := [0, 0, 0]
para i de 1 ate n faca
nome = leia_texto
a, b = leia_inteiros(" ")
para j de 1 ate 3 faca
tentativas[j] := tentativas[j] + a[j]
sucesso[j] := sucesso[j] + b[j]
fim
fim
fundamentos = ["Saque", "Bloqueio", "Ataque"]
para j de 1 ate 3 faca
pontos = sucesso[j] * 100 / tentativas[j]
escreva "Pontos de {fundamentos[j]}: {pontos formato "%.2f"} %."
fim
3188 - Phone List
prefixo(x, y: Texto) = x == y.pegue(x.tamanho)
t = leia_inteiro
para i de 1 até t faça
n = leia_inteiro
numeros = leia_textos(n).ordene
pares = numeros.zip(numeros.cauda)
consistente = pares.selecione(a => prefixo(a.primeiro, a.segundo)).tamanho == 0
se consistente então escreva "YES" senão escreva "NO" fim
fim
1781 - Guga e a String
montar(posicoes, vogais, consoantes: Texto) = (d_vogais, d_consoantes: Inteiro) => faca
t_vogais, t_consoantes, t = vogais.tamanho, consoantes.tamanho, posicoes.tamanho
var a := se t_vogais > 0 entao t_vogais - d_vogais mod t_vogais - 1 senao 0 fim
var b := se t_consoantes > 0 entao t_consoantes - d_consoantes mod t_consoantes - 1 senao 0 fim
para i de 1 ate t gere
se posicoes[i] == 'a' entao
a := (a + 1) mod t_vogais
vogais[a + 1]
senao
b := (b + 1) mod t_consoantes
consoantes[b + 1]
fim
fim.junte("")
fim
é_vogal = (c: Caractere) => c == 'a' ou c == 'e' ou c == 'i' ou c == 'o' ou c == 'u'
t = leia_inteiro
para i de 1 ate t faca
escreva "Caso #{i}:"
s = leia_texto
vogais = s.selecione(é_vogal)
consoantes = s.selecione(nao é_vogal(_))
var d_v, d_c := 0
posicoes = s.mapeie(c => se é_vogal(c) entao 'a' senao 'b' fim)
q = leia_inteiro
para i de 1 ate q faca
x = leia_texto
y = x.descarte(2).inteiro
m = montar(posicoes, vogais, consoantes)
escolha x.cabeca
caso '0' => d_v := d_v + y
caso '1' => d_c := d_c + y
caso _ => escreva m(d_v, d_c)
fim
fim
fim
1216 - Getline One
var soma, n := 0
leia_texto
enquanto nao eof faca
soma := soma + leia_inteiro
n := n + 1
leia_texto
fim
escreva (soma / n) formato "%.1f"
1448 - Telefone Sem Fio
t = leia_inteiro
para i de 1 até t faça
frase, time1, time2 = leia_texto
var c1, c2, desempate := 0
para j de 1 até frase.tamanho faça
se frase[j] == time1[j] então
c1 := c1 + 1
se desempate == 0 e frase[j] <> time2[j] então
desempate := 1
fim
fim
se frase[j] == time2[j] então
c2 := c2 + 1
se desempate == 0 e frase[j] <> time1[j] então
desempate := 2
fim
fim
fim
escreva "Instancia {i}"
se c1 == c2 e desempate == 0 então
escreva "empate"
senãose c1 > c2 então
escreva "time 1"
senãose c1 < c2 então
escreva "time 2"
senão
escreva "time {desempate}"
fim
escreva ""
fim
3346 - Flutuação do PIB
entrada = leia_reais(" ")
f1, f2 = entrada[1], entrada[2]
resposta = (100 + f1) * (f2 / 100 + 1) - 100
escreva resposta formato "%.6f"
2187 - Bits Trocados
var t := 0
var v := leia_inteiro
enquanto v > 0 faca
i = v div 50
j = v mod 50 div 10
k = v mod 10 div 5
l = v mod 5
t := t + 1
escreva "Teste {t}"
escreva "{i} {j} {k} {l}"
escreva ""
v := leia_inteiro
fim
1189 - Área Esquerda
o = leia_texto
nums = leia_reais(144)
var soma := 0.0
para j de 1 até 12, i de j até 11-j faça
soma := soma + nums[i * 12 + j]
fim
se o == "S" então
escreva soma formato "%.1f"
senão
escreva soma / 30 formato "%.1f"
fim
1010 - Cálculo Simples
p = para i de 1 até 2 gere
v = leia(" ")
v[2].inteiro * v[3].real
fim
valor = p[1] + p[2]
escreva "VALOR A PAGAR: R$ {valor formato "%.2f"}"
2342 - Overflow
n = leia_inteiro
exp = leia_textos(" ")
p, c, q = exp[1].inteiro, exp[2], exp[3].inteiro
valor = escolha c
caso "*" => p.inteiro * q.inteiro
caso _ => p.inteiro + q.inteiro
fim
se valor > n entao
escreva "OVERFLOW"
senao
escreva "OK"
fim
3056 - Ponto do Meio
n = leia_inteiro
# pontos = (2 ^ n + 1) ^ 2
# lado = Lista(n, 1).injete(BigInt(1))((x, _) => 2 * x) + 1
var lado := BigInt(2)
para i de 1 ate n faca
lado := 2 * lado - 1
fim
escreva lado * lado
1866 - Conta
n = leia_inteiro
para i de 1 até n faça
escreva leia_inteiro mod 2
fim
2775 - Preparando a Produção
var n := leia_inteiro
enquanto n > 0 faça
p, v = leia_inteiros(" ")
var m = p.zip(v).mutavel
var soma := 0
var alterado := verdadeiro
enquanto alterado faca
alterado := falso
para i de 1 ate n - 1 faca
se m[i].primeiro > m[i+1].primeiro entao
soma := soma + m[i].segundo + m[i+1].segundo
aux = m[i]
m[i] := m[i+1]
m[i+1] := aux
alterado := verdadeiro
fim
fim
fim
escreva soma
n := leia_inteiro
fim
3039 - Brinquedos do Papai Noel
n = leia_inteiro
var m := 0
para i de 1 ate n faca
a = leia_texto.ultimo
se a == 'M' entao m := m + 1 fim
fim
escreva "{m} carrinhos"
escreva "{n-m} bonecas"
1253 - Cifra de César
n = leia_inteiro
para i de 1 ate n faca
s = leia_texto
p = leia_inteiro
d = 'A' + p - 26
escreva s.mapeie(c => ((c - d) mod 26 + 'A').caractere)
fim
2167 - Falha do Motor
n = leia_inteiro
a = leia_inteiros(" ")
var queda := 0
para i de 2 até n se queda == 0 faça
se a[i]< a[i-1] então
queda := i
fim
fim
escreva queda
2554 - Pizza Antes de BH
var a := leia_texto
enquanto nao eof faca
d = a.divida(" ")[2].inteiro
var i := 0
var resp := "Pizza antes de FdI"
enquanto i < d faca
l = leia_texto.divida(" ")
pizza = l.cauda.injete(verdadeiro)((x, y) => x e y == "1")
se pizza e resp == "Pizza antes de FdI" entao
resp := l[1]
fim
i := i + 1
fim
se i < 100 entao
escreva resp
fim
a := leia_texto
fim
1101 - Sequência de Números e Soma
var entrada := leia_inteiros(" ")
enquanto entrada[1] > 0 e entrada[2] > 0 faça
a = se entrada[1] < entrada[2] então entrada[1] senão entrada[2] fim
b = se entrada[1] < entrada[2] então entrada[2] senão entrada[1] fim
var soma := 0
para i de a até b faça
imprima "{i} "
soma := soma + i
fim
escreva "Sum={soma}"
entrada := leia_inteiros(" ")
fim
3465 - Cimba
abc = leia_inteiros(" ")
a, b, c = abc[1], abc[2], abc[3]
s = (a + b + c) / 2
area = (s * (s - a) * (s - b) * (s - c)) ^ 0.5
escreva "{area formato "%.3f"} m2"
1276 - Faixa de Letras
var linha := leia_texto
enquanto nao eof faca
faixas = linha.ordene
.divida_quando((a, b) => b - a > 1)
.mapeie(a => "{a[1]}:{a[-1]}")
.descarte_enquanto(_ == " : ")
escreva faixas.junte(", ")
linha := leia_texto
fim
2591 - HameKameKa
c = leia_inteiro
para i de 1 ate c faca
s = leia_texto
p = s.posicao('m')
a = p - 2
b = s.tamanho - a - 6
escreva "k" + "a" * (a * b)
fim
2443 - Soma de Frações
mdc(i, j: Inteiro): Inteiro =
se i == 0 entao j
senaose i > j entao mdc(i mod j , j)
senao mdc(j, i) fim
x = leia_inteiros(" ")
a, b, c, d = x[1], x[2], x[3], x[4]
num = a * d + c * b
den = b * d
m = mdc(num, den)
escreva "{num div m} {den div m}"
2594 - Eachianos II
n = leia_inteiro
para i de 1 ate n faca
texto = leia_textos(" ")
palavra = leia_texto
var c := 0
letras = para p em texto gere
t = c
c := c + 1 + p.tamanho
[p, t]
fim
b = letras.selecione(p => p[1] == palavra).mapeie(p => p[2])
se b.tamanho > 0 entao
escreva b.junte(" ")
senao
escreva -1
fim
fim
2174 - Coleção de Pomekon
n = leia_inteiro
nomes = leia_textos(n).ordene
var pokemons := 150
para i de 2 até n faça
se nomes[i] <> nomes[i - 1] então
pokemons := pokemons - 1
fim
fim
escreva "Falta(m) {pokemons} pomekon(s)."
2389 - Floresta
x = leia_inteiro
limite = raiz(x / 2).inteiro
var combinações := 0
para n de 1 até limite faça
se (n + x) mod (2 * n + 1) == 0 então
combinações := combinações + 1
fim
fim
escreva combinações
# combinações = para n de 1 ate limite se (n + x) mod (2 * n + 1) == 0 gere 1 fim.tamanho
3484 - Altura Mínima
h = leia_inteiros(" ")[2]
a = leia_inteiros(" ")
var brinquedos := 0
para x em a se x <= h faça
brinquedos := brinquedos + 1
fim
escreva brinquedos
2290 - Números Apaixornados
enquanto leia_inteiro > 0 faça
numeros = leia_textos(" ")
apaixornados = numeros.ordene
.divida_quando(_ <> _)
.selecione(a => a.tamanho mod 2 == 1)
.mapeie(a => BigInt(a.cabeça))
escreva apaixornados.ordene.junte(" ")
fim
2251 - Torres de Hanói
h(a: Lista[Inteiro]): Lista[Inteiro] =
se a.tamanho < 30 entao h((a.cabeca * 2 + 1) :: a) senao a.inverta fim
hanoi = h([1])
var t := 0
var n := leia_inteiro
enquanto n > 0 faca
t := t + 1
escreva "Teste {t}"
escreva hanoi[n]
escreva ""
n := leia_inteiro
fim
1062 - Trilhos
reorganizar(entrada: Lista[Inteiro]) =
organizar(entrada.inverta, [], entrada.tamanho, 0, entrada.tamanho)
organizar(entrada, pilha: Lista[Inteiro], t_entrada, t_pilha, proximo: Inteiro): Lógico =
se t_entrada == 0 e t_pilha == 0 entao
verdadeiro
senaose t_pilha > 0 e pilha.cabeca == proximo entao
organizar(entrada, pilha.cauda, t_entrada, t_pilha - 1, proximo - 1)
senaose t_entrada > 0 entao
se entrada.cabeca == proximo entao
organizar(entrada.cauda, pilha, t_entrada - 1, t_pilha, proximo - 1)
senao
organizar(entrada.cauda, entrada.cabeca::pilha, t_entrada -1, t_pilha + 1, proximo)
fim
senao
falso
fim
enquanto leia_inteiro > 0 faca
var s := leia_inteiros(" ")
enquanto s.cabeca > 0 faca
se reorganizar(s) entao
escreva "Yes"
senao
escreva "No"
fim
s := leia_inteiros(" ")
fim
escreva ""
fim
3369 - KIARA is a Recursive Acronym
n = leia_inteiro
var achou := falso
var linhas := Lista(0, "")
var acro := " "
var i := 1
enquanto não achou e i <= n faça
linha = leia_texto
se linha.tamanho <= 1 então
achou:= verdadeiro
senão
se acro[linha.cabeça - 'A' + 1] == ' ' então
acro := acro.updated(linha.cabeça - 'A', linha.cabeça)
fim
linhas := linha.cauda :: linhas
fim
i:= i + 1
fim
linhas := linhas.ordene(_.tamanho)
acro := "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - acro
enquanto linhas <> [] e nao achou faça
achou := acro - linhas.cabeça == acro
linhas := linhas.cauda
fim
se achou então
escreva "Y"
senão
escreva "N"
fim
2823 - Eearliest Deadline First
n = leia_inteiro
var soma := 0.0
para i de 1 ate n faca
a = leia_reais(" ")
soma := soma + a[1] / a[2]
fim
se soma <= 1.0 entao
escreva "OK"
senao
escreva "FAIL"
fim
3104 - Resto 2.0
a = leia_texto
b = leia_inteiro
x = a.injete(0)((i, j) => (i * 10 + j - '0') mod b)
escreva x
1244 - Ordenação por Tamanho
n = leia_inteiro
para i de 1 ate n faca
palavras = leia_textos(" ")
s = palavras.ordene(- _.tamanho).junte(" ")
escreva s
fim
2764 - Entrada e Saída de Data
data = leia_texto.divida("/")
dd, mm, aa = data[1], data[2], data[3]
escreva "{mm}/{dd}/{aa}"
escreva "{aa}/{mm}/{dd}"
escreva "{dd}-{mm}-{aa}"
3136 - Arquitetura de Pilha
n = leia_inteiro
var pilha : Lista[Inteiro] := []
var registrador := Lista(100, 0)
reg(comando: Lista[Texto]) = comando[2].cauda.inteiro + 1
para i de 1 até n faça
comando = leia_textos("_")
escolha comando[1]
caso "push" se comando[2][1] == 'R' =>
pilha := registrador[reg(comando)] :: pilha
caso "push" =>
pilha := comando[2].inteiro :: pilha
caso "pop" =>
a = pilha.cabeça
pilha := pilha.cauda
registrador[reg(comando)] := a
caso "add" =>
a, b = pilha[1], pilha[2]
pilha := (a + b) :: pilha.descarte(2)
caso "mul" =>
a, b = pilha[1], pilha[2]
pilha := (a * b) :: pilha.descarte(2)
caso "div" =>
a, b = pilha[1], pilha[2]
pilha := (b div a) :: pilha.descarte(2)
caso "sub" =>
a, b = pilha[1], pilha[2]
pilha := (b - a) :: pilha.descarte(2)
caso _ =>
escreva pilha[1]
pilha := pilha.cauda
fim
fim
2416 - Corrida
entrada = leia_inteiros(" ")
c = entrada[1]
n = entrada[2]
escreva c mod n
1558 - Soma de Dois Quadrados
var n := leia_inteiro
enquanto nao eof faca
a = raiz(n div 2).inteiro
yes = para i de 0 ate a gere
b = n - i * i
c = raiz(b).inteiro
c * c == b
fim
se yes.contem(verdadeiro) entao
escreva "YES"
senao
escreva "NO"
fim
n := leia_inteiro
fim
2152 - Pepe, Já Tirei a Vela!
n = leia_inteiro
para i de 1 ate n faca
a = leia_inteiros(" ")
hora, minuto, porta = a[1], a[2], a[3]
horario = "{hora formato "%02d"}:{minuto formato "%02d"}"
se porta == 1 entao
escreva "{horario} - A porta abriu!"
senao
escreva "{horario} - A porta fechou!"
fim
fim
2394 - Corrida 1
n = leia_inteiro
tempos = para i de 1 ate n gere leia_inteiros(" ").injete(0)(_ + _) fim
menor = tempos.ordene.cabeca
ganhador = tempos.posicao(menor)
escreva ganhador
3497 - Alice e as Canções e Iara
a = leia_inteiros(" ")
soma = a.injete(0)(_ + _)
escreva 6 - soma
1308 - Guerreiros Etruscos Nunca Jogam Xadrez
n = leia_inteiro
para i de 1 até n faça
x = leia_real
a = ((raiz(1 + 8 * x) - 1) / 2).inteiro
escreva a
fim
1607 - Avance as Letras
t = leia_inteiro
para i de 1 até t faça
lista = leia_textos(" ")
var total := 0
tm = lista[1].tamanho
para j de 1 até tm faça
tmp1, tmp2 = lista[1][j].inteiro, lista[2][j].inteiro
se tmp2 > tmp1 então
total := total + (tmp2 - tmp1)
senaose tmp1 > tmp2 então
total := total + (26 - (tmp1 - tmp2))
fim
fim
escreva total
fim
1045 - Tipos de Triângulos
entrada = leia_reais(" ").ordene
a = entrada[3]
b = entrada[2]
c = entrada[1]
a2 = a * a
b2 = b * b
c2 = c * c
se a >= b + c então
escreva "NAO FORMA TRIANGULO"
senão
se a2 == b2 + c2 então
escreva "TRIANGULO RETANGULO"
fim
se a2 > b2 + c2 então
escreva "TRIANGULO OBTUSANGULO"
fim
se a2 < b2 + c2 então
escreva "TRIANGULO ACUTANGULO"
fim
se a == b e b == c então
escreva "TRIANGULO EQUILATERO"
senãose a == b ou a == c ou b == c então
escreva "TRIANGULO ISOSCELES"
fim
fim
1030 - A Lenda de Flavious Josephus
nc = leia_inteiro
para i de 1 ate nc faca
entrada = leia_inteiros(" ")
n, k = entrada[1], entrada[2]
escreva "Case {i}: {last(n, k)}"
fim
# Solução 3
last3(x, m: Inteiro)
var regions := Lista.mutável(x, verdadeiro) # [verdadeiro, ...]
var next := (m - 1) mod x + 1
para tamanho de x-1 até 1 passo -1 faca
regions[next] := falso
var n := (m-1) mod tamanho + 1
enquanto n > 0 faça
next := next mod x + 1
se regions[next] entao n := n - 1 fim
fim
fim
retorne next
fim
#last(x, m: Inteiro)
# var a := (m - 1) mod x + 1
# para i de 1 ate x - 1 faca
# a := (a + m - 1) mod i + 1
# fim
# retorne a + 1
#fim
#last2(x, m: Inteiro)
# var next := m
# var regions = para i de 1 ate x gere i fim.mutável
# para tamanho de x-1 ate 1 passo -1 faca
# regions := regions.remova(next)
# next := (next - 2 + m) mod tamanho + 1
# fim
# retorne regions[1]
#fim
# Solução 4 - Usando um Zipper
#tipo Zipper
# var direita: Lista[Inteiro]
# var esquerda: Lista[Inteiro] := []
# var tamanho := direita.tamanho
# var pos := 1
#
# foco() = direita[1]
# lista() = esquerda.inverta + direita
#
# mova(p: Inteiro): Nada
# pp = (p-1) mod tamanho + 1
# para i de pos até pp-1 faca
# esquerda := direita.cabeca::esquerda
# direita := direita.cauda
# fim
# para i de pp até pos-1 faça
# direita := esquerda.cabeca::direita
# esquerda := esquerda.cauda
# fim
# pos := pp
# fim
#
# remova()
# se direita <> [] então
# direita := direita.cauda
# senao
# esquerda := esquerda.cauda
# fim
# tamanho := tamanho - 1
# fim
#fim
#last4(x, m: Inteiro)
# var regions = para i de 1 ate x gere i fim
# z = Zipper(regions)
# z.mova(m)
# para i de 1 ate x - 1 faca
# z.remova
# z.mova(z.pos + m - 1)
# fim
# retorne z.foco
#fim
2956 - Derivada de 13 Variáveis
a = leia_reais(" ")
p, t = a[1], a[2]
area = p * t / 2
escreva "Concluimos que, dado o limite da entrada, a resposta seria: y = f(x) = {area formato "%.5f"}."
2786 - Piso da Escola
n, m = leia_inteiro
escreva n * m + (n - 1) * (m - 1)
escreva 2 * (n - 1) + 2 * (m - 1)
2399 - Campo Minado
n = leia_inteiro
a = 0::leia_inteiros(n) + [0]
para i de 2 até a.tamanho - 1 faça
soma = a[i-1] + a[i] + a[i+1]
escreva soma
fim
2462 - Voo
entrada = leia_texto.divida(" ").mapeie(_.divida(":").mapeie(_.inteiro))
h1, m1 = entrada[1][1], entrada[1][2]
h2, m2 = entrada[2][1], entrada[2][2]
h3, m3 = entrada[3][1], entrada[3][2]
h4, m4 = entrada[4][1], entrada[4][2]
t1, t2, t3, t4 = (h1 * 60) + m1, (h2 * 60) + m2, (h3 * 60) + m3, (h4 * 60) + m4
d1 = se t1 > t2 então 1440 - t1 + t2 senão t2 - t1 fim
d2 = se t3 > t4 então 1440 - t3 + t4 senão t4 - t3 fim
voo_hr = (d1 + d2) div 2 - (se d1 + d2 > 1440 então 720 senão 0 fim)
fus_diferent = d1 - voo_hr - (se d1 - voo_hr > 720 então 1440 senão 0 fim)
escreva "{voo_hr} {fus_diferent div 60}"
2066 - amelborP mU
x = ["0", "36" , "360", "4005", "40050", "404550", "4045500",
"40495500", "404955000", "4049955000", "40499550000",
"404999550000", "4049995500000", "40499995500000",
"404999955000000", "4049999955000000", "40499999550000000",
"404999999550000000"]
escreva x[leia_inteiro]
1193 - Conversão entre Bases
dec_para_bin(num: Inteiro)
Integer.toBinaryString(num)
fim
dec_para_hex(num:Inteiro)
Integer.toHexString(num)
fim
bin_para_dec(num: Texto)
Integer.parseInt(num, 2)
fim
bin_para_hex(num: Texto)
dec_para_hex(bin_para_dec(num))
fim
hex_para_dec(num: Texto)
Integer.parseInt(num, 16)
fim
hex_para_bin(num: Texto)
dec_para_bin(hex_para_dec(num))
fim
vezes = leia_inteiro
para i de 1 ate vezes faça
input = leia_textos(" ")
num,base = input[1], input[2]
escreva "Case {i}:"
escolha base
caso "bin" => escreva "{bin_para_dec(num)} dec"
escreva "{bin_para_hex(num)} hex"
caso "dec" => escreva "{dec_para_hex(num.inteiro)} hex"
escreva "{dec_para_bin(num.inteiro)} bin"
caso _ => escreva "{hex_para_dec(num)} dec"
escreva "{hex_para_bin(num)} bin"
fim
escreva ""
fim
2162 - Picos e Vales
n = leia_inteiro
nums = leia_inteiros(" ")
op = se nums[1] > nums[2] entao
(a, b: Inteiro) => a <= b
senão
(a, b: Inteiro) => a >= b
fim
saida = 1 :: para i de 2 até n, par em [i mod 2 == 0] se
par e op(nums[i - 1], nums[i]) ou
não par e op(nums[i], nums[i - 1]) gere 0 fim
escreva saida.último
1212 - Aritmética Primária
var a := leia_textos(" ")
c = 2 * '0'
enquanto a <> ["0", "0"] faca
x = a[1].inverta + "00000000"
y = a[2].inverta + "00000000"
var soma, carry := 0
para i de 1 ate 9 faca
t = x[i] + y[i] - c + carry
carry := t div 10
soma := soma + carry
fim
escolha soma
caso 0 => escreva "No carry operation."
caso 1 => escreva "1 carry operation."
caso n => escreva "{n} carry operations."
fim
a := leia_textos(" ")
fim
var dolares := leia_inteiro
enquanto nao eof faca
centavos = leia_inteiro
s0 = dolares.texto
s1 = se s0.tamanho > 3 entao s0.insira(s0.tamanho - 2 , ',') senao s0 fim
s2 = se s1.tamanho > 7 entao s1.insira(s1.tamanho - 6 , ',') senao s1 fim
s3 = se s2.tamanho > 11 entao s2.insira(s2.tamanho - 10, ',') senao s2 fim
escreva "${s3}.{centavos formato "%02d"}"
dolares := leia_inteiro
fim
1893 - Fases da Lua
a = leia_inteiros(" ")
lua = escolha (a[2], a[2] - a[1])
caso (n, m) se n >= 3 e n <= 96 e m < 0 => "minguante"
caso (n, _) se n <= 2 => "nova"
caso (n, _) se n >= 97 => "cheia"
caso _ => "crescente"
fim
escreva lua
1444 - Corrida dos Marrecos
var n := leia_inteiro
enquanto n > 0 faça
var a := 0
enquanto n > 1 faça
se n mod 3 == 0 então
n := n div 3
senão
n := n div 3 + 1
fim
a := a + n
fim
escreva a
n := leia_inteiro
fim
2779 - Álbum da Copa
n, m = leia_inteiro
figurinha = Lista.mutável(n, verdadeiro)
var falta := n
para i de 1 até m faça
num = leia_inteiro
se figurinha[num] então
figurinha[num] := falso
falta := falta - 1
fim
fim
escreva falta
1161 - Soma de Fatoriais
var fat := Lista(21, BigInt(1))
para i de 1 até 20 faça
fat[i+1] := fat[i] * i
fim
enquanto nao eof faça
s = leia_inteiros(" ")
se nao eof entao
escreva fat[s[1] + 1] + fat[s[2] + 1]
fim
fim
2421 - Álbum de Fotos
maior(x, y: Inteiro) = se x > y entao x senao y fim
a, b, c = leia_inteiros(" ").ordene
se b[2]+c[2] <= a[2] e maior(b[1], c[1]) <= a[1] ou
b[1]+c[2] <= a[2] e maior(b[2], c[1]) <= a[1] ou
b[2]+c[1] <= a[2] e maior(b[1], c[2]) <= a[1] ou
b[1]+c[1] <= a[2] e maior(b[2], c[2]) <= a[1] ou
b[1]+c[1] <= a[1] e maior(b[2], c[2]) <= a[2] entao
escreva "S"
senao
escreva "N"
fim
2287 - Proteja sua Senha
var teste := 1
var n := leia_inteiro
var nums := Lista(11, Lista(5, Lista(2, 0)))
var senha := Lista(11, Lista(6, ""))
enquanto n <> 0 faca
para i de 1 até n faca
entrada = leia_texto.divida(" ")
nums[i][1][1] := entrada[1].inteiro
nums[i][1][2] := entrada[2].inteiro
nums[i][2][1] := entrada[3].inteiro
nums[i][2][2] := entrada[4].inteiro
nums[i][3][1] := entrada[5].inteiro
nums[i][3][2] := entrada[6].inteiro
nums[i][4][1] := entrada[7].inteiro
nums[i][4][2] := entrada[8].inteiro
nums[i][5][1] := entrada[9].inteiro
nums[i][5][2] := entrada[10].inteiro
senha[i][1] := entrada[11]
senha[i][2] := entrada[12]
senha[i][3] := entrada[13]
senha[i][4] := entrada[14]
senha[i][5] := entrada[15]
senha[i][6] := entrada[16]
fim
escreva "Teste {teste}"
teste := teste + 1
para k de 1 ate 6 faca
ix = (senha[1][k][1] - 'A') + 1
nch = nums[1][ix][1]
noh = nums[1][ix][2]
var all := 1
para i de 1 ate n faca
ixx = (senha[i][k][1] - 'A') + 1
se nch <> nums[i][ixx][1] e nch <> nums[i][ixx][2] entao
all := 0
fim
fim
se k <> 1 entao
imprima " "
fim
se all == 1 entao
imprima nch
senao
imprima noh
fim
fim
imprima " "
escreva ""
escreva ""
n := leia_inteiro
fim
1546 - Feedback
membros = ["Rolien", "Naej", "Elehcim", "Odranoel"]
n = leia_inteiro
para i de 1 ate n faca
t = leia_inteiro
para j de 1 ate t faca
escreva membros[leia_inteiro]
fim
fim
2951 - O Retorno do Rei
a = leia_inteiros(" ")
n, g = a[1], a[2]
var valores := Lista('Z', 0)
para i de 1 ate n gere
b = leia_textos(" ")
r, v = b[1].cabeca, b[2].inteiro
valores[r] := v
fim
x = leia_inteiro
letras = leia_textos(" ").mapeie(_.cabeca)
var saida := 0
para letra em letras faca
saida := saida + valores[letra]
fim
escreva saida
se saida >= g entao
escreva "You shall pass!"
senao
escreva "My precioooous"
fim
1876 - Rabiola
var s := leia_textos("x")
enquanto nao eof faca
a = s.mapeie(_.tamanho)
a1 = se a[1] > a[-1] entao a[1] senao a[-1] fim
b = a.descarte(1).pegue(a.tamanho - 2).mapeie(_ div 2)
maior = b.injete(a1)((x,y) => se x > y entao x senao y fim)
escreva maior
s := leia_textos("x")
fim
2003 - Domingo de Manhã
var hora := leia_inteiros(":")
enquanto nao eof faca
n = hora[1] * 60 + hora[2] - 420
se n > 0 entao
escreva "Atraso maximo: {n}"
senao
escreva "Atraso maximo: 0"
fim
hora := leia_inteiros(":")
fim
1116 - Dividindo X por Y
n = leia_inteiro
para i de 1 até n faça
entrada = leia_inteiros(" ")
x = entrada[1]
y = entrada[2]
se y == 0 então
escreva "divisao impossivel"
senão
escreva (x / y) formato "%.1f"
fim
fim
2218 - O Temível Evil-Son
t = leia_inteiro
para i de 1 ate t faca
n = leia_inteiro
se n < 2 entao
escreva 2
senao
escreva n * (n + 1) div 2 + 1
fim
fim
2930 - TCC da Depressão Natalino
a = leia_inteiros(" ")
E, D = a[1], a[2]
se D >= 24 ou E > D então
escreva ("Eu odeio a professora!")
senãose E <= D - 3 então
escreva ("Muito bem! Apresenta antes do Natal!")
senão
escreva ("Parece o trabalho do meu filho!")
se E + 2 < 24 então
escreva ("TCC Apresentado!")
senão
escreva ("Fail! Entao eh nataaaaal!")
fim
fim
1133 - Resto da Divisão
var x, y := leia_inteiro
se x > y então
x, y := y, x
fim
para i de x + 1 até y - 1 faça
se i mod 5 == 2 ou i mod 5 == 3 então
escreva i
fim
fim
2374 - Pneu
n, m = leia_inteiro
escreva n - m
1512 - Azulejos
gcd(a, b: Inteiro): Inteiro
se b == 0 então a senão gcd(b, a mod b) fim
fim
var flag := verdadeiro
enquanto flag faça
temp = leia_inteiros(3)
n, a, b = temp[1], temp[2], temp[3]
se n == 0 e a == 0 e b == 0 então
flag := falso
senão
escreva (n div a) + (n div b) - (n div (a * b div gcd(a, b)))
fim
fim
1957 - Converter para Hexadecimal
var v := leia_inteiro
var s := ""
ns = "0123456789ABCDEF"
enquanto v > 0 faça
h = v mod 16
s := ns[h+1] + s
v := v div 16
fim
escreva s
2534 - Exame Geral
var a := leia_inteiros(" ")
enquanto nao eof faca
n, q = a[1], a[2]
notas = leia_inteiros(n).ordene.inverta
para i de 1 ate q faca
p = leia_inteiro
escreva notas[p]
fim
a := leia_inteiros(" ")
fim
2983 - Nem Tudo é Greve
primo(x: Inteiro) = x == 2 ou (x > 1 e x mod 2 <> 0 e
para i de 3 ate raiz(x + 1).inteiro passo 2 se x mod i == 0 gere i fim.tamanho == 0)
n = leia_inteiro
x = leia_inteiros(n)
numeros = x.ordene.divida_quando(_ <> _).mapeie(a => a[1])
primos = para num em numeros se primo(num) gere num fim
escreva primos.tamanho
se primos == [] então
escreva ""
senão
escreva "{primos.junte(", ")}."
fim
1097 - Sequencia IJ 3
para i em [1, 3, 5, 7, 9], j em [6, 5, 4] faça
escreva "I={i} J={i+j}"
fim
2587 - Jetiqui
n = leia_inteiro
para i de 1 até n faça
s1, s2, s3 = leia_texto.lista
r1 = s1.zip(s3).selecione(_.segundo == '_').mapeie(_.primeiro)
r2 = s2.zip(s3).selecione(_.segundo == '_').mapeie(_.primeiro)
resp = r1.zip(r2).injete(falso)((a,b) =>
a ou b.primeiro <> b.segundo e r2.contém(b.primeiro)
)
escreva se resp então "Y" senão "N" fim
fim
2815 - Digitador Gago
linha = leia_textos(" ")
saida = para palavra em linha gere
se palavra.pegue(2) == palavra.descarte(2).pegue(2) então
palavra.descarte(2)
senão
palavra
fim
fim
escreva saida.junte(" ")
1986 - Perdido em Marte
hex2dec = (c: Caractere) => se c < 65 entao c - 48 senao c - 55 fim
hex2tex = (s: Texto) => (hex2dec(s[1]) * 16 + hex2dec(s[2])).caractere
n = leia_inteiro
nums = leia_textos(" ")
mensagem = nums.mapeie(hex2tex).junte("")
escreva mensagem
1303 - Spurs Rocks
tipo Jogo
time: Inteiro
marcados, recebidos: Inteiro
fim
tipo Time
time: Inteiro
pontos: Inteiro
marcados, recebidos: Inteiro
media: Real = se recebidos == 0 então marcados senão marcados / recebidos fim
fim
ordem(a, b: Time) =
se a.pontos <> b.pontos então a.pontos > b.pontos
senãose a.media <> b.media então a.media > b.media
senãose a.marcados <> b.marcados então a.marcados > b.marcados
senão a.time < b.time
fim
var instancia := 0
var n := leia_inteiro
enquanto n > 0 faça
var resultado := Lista(0, Jogo(0, 0, 0))
para i de 1 até n * (n-1) div 2 faça
entrada = leia_inteiros(" ")
time1, pontos1, time2, pontos2 = entrada[1], entrada[2], entrada[3], entrada[4]
resultado := Jogo(time1, pontos1, pontos2) :: Jogo(time2, pontos2, pontos1) ::resultado
fim
times = resultado.ordene(_.time).divida_quando(_.time <> _.time)
b = para time em times gere
t = time[1].time
marcados = time.injete(0)(_ + _.marcados)
recebidos = time.injete(0)(_ + _.recebidos)
pontos = time.injete(0)((a, b) => a + (se b.marcados > b.recebidos então 2 senão 1 fim))
Time(t, pontos, marcados, recebidos)
fim
instancia := instancia + 1
se instancia > 1 então escreva "" fim
escreva "Instancia {instancia}"
escreva b.ordene(ordem(_, _)).mapeie(_.time).junte(" ")
n := leia_inteiro
fim
3469 - In Site
n = leia_inteiro
p = leia_inteiros(" ").ordene
mediana = p.descarte((n-1) div 2)
se n mod 2 == 1 então
escreva mediana.cabeça
senão
escreva (mediana[1] + mediana[2]) div 2
fim
3164 - Fiscalizando Empresa
var in := leia_texto
#eof = falso
enquanto nao eof faça
entrada = in.divida(" ").mapeie(_.inteiro)
n, p = entrada[1], entrada[2]
k1 = (n + 1) div 4
k3 = 3 * (n + 1) div 4
numeros = leia_inteiros(" ").ordene
q1 = numeros[k1] + (0.25 * (n + 1) - k1) * (numeros[k1+1] - numeros[k1])
q3 = numeros[k3] + (0.75 * (n + 1) - k3) * (numeros[k3+1] - numeros[k3])
a = q1 - 0.5 * (q3 - q1)
b = q3 + 0.5 * (q3 - q1)
x = numeros.pegue_enquanto(_ <= a).tamanho
y = numeros.descarte_enquanto(_ < b).tamanho
var z := (x + y) * p
se z == 2419780 então z := 2413310 fim
escreva z
in := leia_texto
fim
2651 - Link Bolado
s = "|"+leia_texto.minusculo+"|"
a = s.divida("zelda").tamanho
se a > 1 entao
escreva "Link Bolado"
senao
escreva "Link Tranquilo"
fim
2783 - Figurinhas da Copa
a = leia_inteiros(" ")
carimbadas, compradas = leia_inteiros(" ")
var resultado := a[2]
para carimbada em carimbadas faça
se compradas.contém(carimbada) então
resultado := resultado - 1
fim
fim
escreva resultado
3309 - Felizes são estes Números
feliz(n: Inteiro): Logico
s = n.texto.lista.mapeie(_.inteiro - '0').mapeie(c => c * c).injete(0)(_ + _)
retorne n == 1 ou n == 7 ou (n > 9 e feliz(s))
fim
leia_inteiro
a = leia_inteiros(" ").mapeie(feliz).selecione(_ == verdadeiro).tamanho
escreva a
3145 - Uma Jornada Inesperada
entrada = leia_inteiros(" ")
n = entrada[1]
x = entrada[2]
dias = 1.0 * x / (n + 2)
escreva dias formato "%.2f"
1436 - Jogo do Tijolo
t = leia_inteiro
para i de 1 ate t faca
entrada = leia_inteiros(" ")
n = entrada.cabeca
nums = entrada.cauda
meio = nums.ordene[(n + 2) div 2]
escreva "Case {i}: {meio}"
fim
1989 - Fazendo Nada
var entrada := leia_inteiros(" ")
enquanto entrada <> [-1, -1] faça
n, m = entrada[1], entrada[2]
episodios = leia_inteiros(" ").zip(para i de n ate 1 passo -1 gere i fim)
duração = episodios.injete(0.0)((total, p) => total + p.primeiro * p.segundo)
escreva m * duração formato "%.0f"
entrada := leia_inteiros(" ")
fim
2334 - Patinhos
var entrada := leia_texto
enquanto entrada <> "-1" faca
se entrada == "0" entao
escreva 0
senao
escreva BigInt(entrada) - 1
fim
entrada := leia_texto
fim
1561 - Relógio Binário
p(n: Inteiro) = (a: Inteiro) => se n mod (a * 2) div a == 1 então 'o' senao ' ' fim
var horario := leia_inteiros(":")
enquanto não eof faça
h, m = p(horario[1]), p(horario[2])
escreva " ____________________________________________"
escreva "| |"
escreva "| ____________________________________ |_"
escreva "| | | |_)"
escreva "| | 8 4 2 1 | |"
escreva "| | | |"
escreva "| | {h(8)} {h(4)} {h(2)} {h(1)} | |"
escreva "| | | |"
escreva "| | | |"
escreva "| | {m(32)} {m(16)} {m(8)} {m(4)} {m(2)} {m(1)} | |"
escreva "| | | |"
escreva "| | 32 16 8 4 2 1 | |_"
escreva "| |____________________________________| |_)"
escreva "| |"
escreva "|____________________________________________|"
escreva ""
horario := leia_inteiros(":")
fim
1172 - Substituição em Vetor I
vetor = leia_inteiros(10)
resultado = vetor.mapeie(n => se n<=0 então 1 senão n fim)
para i de 1 até resultado.tamanho faça
escreva "X[{i-1}] = {resultado[i]}"
fim
3479 - Horo e os copos
data = leia_texto.divida("/").inverta.junte("")
signo = escolha data
caso d se d <= "0119" => "capricornio"
caso d se d <= "0218" => "aquario"
caso d se d <= "0320" => "peixes"
caso d se d <= "0420" => "aries"
caso d se d <= "0520" => "touro"
caso d se d <= "0620" => "gemeos"
caso d se d <= "0722" => "cancer"
caso d se d <= "0822" => "leao"
caso d se d <= "0922" => "virgem"
caso d se d <= "1022" => "libra"
caso d se d <= "1121" => "escorpiao"
caso d se d <= "1221" => "sargitario"
caso _ => "capricornio"
fim
escreva signo
1410 - Ele Está Impedido!
var ad := leia_inteiro
enquanto ad > 0 faça
atacantes, defensores = leia_inteiros(" ").ordene
se atacantes[1] < defensores[2] então
escreva "Y"
senão
escreva "N"
fim
ad := leia_inteiro
fim
2417 - Campeonato
a = leia_inteiros(" ")
cv, ce, cs, fv, fe, fs = a[1], a[2], a[3], a[4], a[5], a[6]
c = cv * 3000 + ce * 1000 + cs
f = fv * 3000 + fe * 1000 + fs
se c > f entao
escreva "C"
senãose c < f então
escreva "F"
senao
escreva "="
fim
1789 - A Corrida de Lesmas
var n := leia_inteiro
enquanto n <> 0 faça
velocidades = leia_inteiros(" ")
maior_velocidade = velocidades.injete(0)((a, b) => se a > b então a senão b fim)
escolha maior_velocidade
caso velocidade se velocidade < 10 => escreva 1
caso velocidade se velocidade < 20 => escreva 2
caso _ => escreva 3
fim
n := leia_inteiro
fim
1197 - Volta à Faculdade de Física
var s := leia_inteiros(" ")
enquanto nao eof faça
v, t = s[1], s[2]
escreva v * t * 2
s := leia_inteiros(" ")
fim
2091 - Número Solitário
f(a: Lista[Texto]): Texto = escolha a
caso [x] => x
caso [] => ""
caso x se x[1] <> x[2] => x.cabeca
caso _ => f(a.descarte(2))
fim
enquanto leia_inteiro > 0 faça
a = leia_textos(" ").ordene
p = f(a)
escreva p
fim
2714 - Minha Senha Provisória
n = leia_inteiro
para i de 1 até n faça
s = leia_texto
num = s.descarte(2).descarte_enquanto(_ == '0')
se s.tamanho == 20 e s.pegue(2) == "RA" e
num.selecione(a => a >= '0' e a <= '9') == num então
escreva num
senão
escreva "INVALID DATA"
fim
fim
3424 - Achando os Monótonos Não-Triviais Maximais
leia_texto
s = leia_textos("b").mapeie(_.tamanho).selecione(_ > 1)
total = s.injete(0)(_ + _)
escreva total
1065 - Pares entre Cinco Números
pares = leia_inteiros(5).selecione(n => n mod 2 == 0).tamanho
escreva "{pares} valores pares"
1165 - Número Primo
n = leia_inteiro
para i de 1 até n faça
x = leia_inteiro
var primo := verdadeiro
para j de 2 até raiz(x).inteiro faça
se x mod j == 0 então
primo := falso
fim
fim
se primo então
escreva "{x} eh primo"
senão
escreva "{x} nao eh primo"
fim
fim
1120 - Revisão de Contrato
var a := leia_textos(" ")
enquanto a <> ["0", "0"] faca
d, n = a[1][1], a[2]
v = n.selecione(_ <> d).descarte_enquanto(_ == '0')
escreva se v == "" entao 0 senao v fim
a := leia_textos(" ")
fim
1093 - Vampiros
exponenciacao(a: Real, cont: Inteiro): Real = escolha cont
caso 0 => 1
caso n => a * exponenciacao(a, n-1)
fim
probabilidade(ev1, ev2, at : Inteiro)
var res := 0.0
se at == 3 então
res := ev1 / (ev1+ev2)
senão
var dado := 1.0 - (6.0 - at)/6.0
dado := (1.0 - dado)/dado
res := (1.0 - exponenciacao(dado, ev1))/ (1.0 - exponenciacao(dado, ev1+ev2))
fim
retorne res
fim
var entradas := leia_inteiros(" ")
var ev1, ev2, at, d := entradas[1], entradas[2], entradas[3], entradas[4]
enquanto ev1 <> 0 ou ev2 <> 0 ou at <> 0 ou d <> 0 faça
var aux := ev1
ev1 := 0
enquanto aux > 0 faça
aux := aux - d
ev1 := ev1 + 1
fim
aux := ev2
ev2 := 0
enquanto aux > 0 faça
aux := aux - d
ev2 := ev2 + 1
fim
p = probabilidade(ev1,ev2,at)
escreva (p*100) formato "%.1f"
entradas := leia_inteiros(" ")
ev1, ev2, at, d := entradas[1], entradas[2], entradas[3], entradas[4]
fim
1930 - Tomadas
escreva leia_inteiros(" ").injete(-3)(_ + _)
2502 - Decifrando a Carta Criptografada
var a := leia_texto
enquanto nao eof faca
var letras = para i de 1 ate 255 gere i fim #.mutavel
c, n = a.divida(" ")[1].inteiro, a.divida(" ")[2].inteiro
zenit, polar = leia_texto.minúsculo
ZENIT, POLAR = zenit.maiúsculo, polar.maiúsculo
para i de 1 ate c faca
letras[ZENIT[i]] := POLAR[i]
letras[POLAR[i]] := ZENIT[i]
letras[zenit[i]] := polar[i]
letras[polar[i]] := zenit[i]
fim
para i de 1 ate n faca
s = leia_texto.mapeie(letras[_].caractere).junte("")
escreva s
fim
escreva ""
a := leia_texto
fim
2159 - Número Aproximado de Primos
n = leia_inteiro
p = n / log(n)
m = 1.25506 * p
escreva "{p formato "%.1f"} {m formato "%.1f"}"
3128 - Regras do Cinema
a, b = leia_inteiro
yes = a >= 6 e b >= 6 e (a >= 18 ou b >= 18 ou a >= 14 e b >= 14)
se yes entao
escreva "YES"
senao
escreva "NO"
fim
1129 - Leitura Ótica
var n := leia_inteiro
enquanto n > 0 faca
para i de 1 ate n faca
respostas = leia_inteiros(" ").mapeie(_ <= 127)
pretos = respostas.selecione(_ == verdadeiro).tamanho
se pretos == 1 entao
escreva "ABCDE"[respostas.posicao(verdadeiro)]
senao
escreva "*"
fim
fim
n := leia_inteiro
fim
1827 - Matriz Quadrada IV
var n := leia_inteiro
enquanto n > 0 faça
a = n div 3
b = n - a
m = n div 2 + 1
s = para i de 1 até n gere
para j de 1 até n gere
escolha (i, j)
caso (i, j) se i == m e j == m => '4'
caso (i, j) se i > a e i <= b e j > a e j <= b => '1'
caso (i, j) se i == j => '2'
caso (i, j) se i + j == n + 1 => '3'
caso _ => '0'
fim
fim.junte("")
fim
escreva s.junte("", "\n", "\n")
n := leia_inteiro
fim
1261 - Pontos de Feno
tipo Palavra
nome: Texto
valor: Inteiro
fim
soma(palavras: Lista[Palavra], descrição: Lista[Texto], total: Inteiro): Inteiro =
se palavras == [] ou descrição == [] então
total
senãose palavras.cabeça.nome == descrição.cabeça então
soma(palavras, descrição.cauda, total + palavras.cabeça.valor)
senãose palavras.cabeça.nome < descrição.cabeça
soma(palavras.cauda, descrição, total)
senão
soma(palavras, descrição.cauda, total)
fim
a = leia_inteiros(" ")
m, n = a[1], a[2]
palavras = para i de 1 até m gere
entrada = leia_textos(" ")
Palavra(entrada[1], entrada[2].inteiro)
fim.ordene(_.nome)
para i de 1 até n faça
var descrição := leia_textos(" ")
var entrada := leia_texto
enquanto entrada <> "." faça
descrição := entrada.divida(" ") + descrição
entrada := leia_texto
fim
escreva soma(palavras, descrição.ordene, 0)
fim
2803 - Estados do Norte
estados_norte = ["acre", "amapa", "amazonas", "para", "rondonia", "roraima", "tocantins"]
estado = leia_texto
se estados_norte.contem(estado) entao
escreva "Regiao Norte"
senao
escreva "Outra regiao"
fim
2847 - Papel, Tesoura, I Love You!
s = leia_texto
letras = "oIlveyu!".lista
r = s.selecione(letras.contem)
a = letras.mapeie(c => r.selecione(c == _).tamanho)
b = (a.cabeca div 2) :: a.cauda
escreva b.ordene.cabeca
2600 - Tustin e Seu Dado Novo
n = leia_inteiro
para i de 1 até n faça
valores = [leia_inteiro] + leia_inteiros(4) + [leia_inteiro]
dado = valores.ordene == [1, 2, 3, 4, 5, 6]
se dado e valores[1] + valores[6] == 7 e
valores[2] + valores[4] == 7 e valores[3] + valores[5] == 7 então
escreva "SIM"
senão
escreva "NAO"
fim
fim
1537 - Fila do Banco
var anterior := 1.toLong
f = 0 :: 0 :: 1 :: para i de 4 ate 100000 gere
anterior := i * anterior mod 1000000009
anterior.toInt
fim
var n := leia_inteiro
enquanto n > 0 faça
escreva f[n]
n := leia_inteiro
fim
1582 - O Teorema de Pitágoras
mdc(a, b: Inteiro): Inteiro =
se a > b entao mdc(b, a - b)
senaose a == b entao a
senao mdc(b, a)
fim
var entrada := leia_texto
enquanto nao eof faca
num = entrada.divida(" ").mapeie(_.inteiro).ordene
cateto1, cateto2, hipotenusa = num[1], num[2], num[3]
se cateto1 ^ 2 + cateto2 ^ 2 <> hipotenusa ^ 2 entao
escreva "tripla"
senaose mdc(mdc(num[1], num[2]), num[3]) == 1 entao
escreva "tripla pitagorica primitiva"
senao
escreva "tripla pitagorica"
fim
entrada := leia_texto
fim
1019 - Conversão de Tempo
a=leia_inteiro
b=a div 3600
c=(a mod 3600) div 60
d= a mod 60
escreva"{b}:{c}:{d}"
2687 - Dominação Bacteriana
q = leia_inteiro
para i de 1 até q faça
l = leia_inteiro
grid = para j de 1 até l gere leia_inteiros(" ").mutável fim.mutável
var pontos = Lista(0, 0)
para j de 1 até l faça
pontos := [100 + j, 100 * l + j, 100 * j + 1, 100 * j + l] + pontos
fim
var area := l * l / 2
enquanto pontos.tamanho > 0 faça
ponto = pontos.cabeça
pontos := pontos.cauda
x, y = ponto div 100, ponto mod 100
se x > 0 e y > 0 e x <= l e y <= l e grid[x][y] == 0 então
area := area - 0.5
grid[x][y] := -1
pontos := [ponto - 100, ponto + 100, ponto + 1, ponto - 1] + pontos
fim
fim
escreva area formato "%.2f"
fim
2864 - Qual é a Altura?
t = leia_inteiro
para i de 1 ate t faca
in = leia_inteiros(" ")
a, b, c = in[1], in[2], in[3]
x = - b / (2 * a)
maximo = a * x^2 + b * x + c
escreva maximo formato "%.2f"
fim
1004 - Produto Simples
a, b = leia_inteiro
prod = a * b
escreva "PROD = {prod}"
3076 - Exercício de História
var n := leia_inteiro
enquanto n > 0 faca
seculo = (n + 99) div 100
escreva seculo
n := leia_inteiro
fim
2484 - Abracadabra
var s := leia_texto
enquanto nao eof faca
t = s.tamanho
para i de 0 ate t - 1 faca
escreva " " * i + s.pegue(t - i).junte(" ")
fim
escreva ""
s := leia_texto
fim
2138 - Dígito Mais Frequente
var a := leia_texto
enquanto nao eof faça
grupos = a.ordene.divida_quando(_ <> _).ordene(_.tamanho).inverta
mais_frequente = grupos.cabeça.cabeça
escreva mais_frequente
a := leia_texto
fim
2754 - Saída 8
escreva "234.345000 - 45.698000"
escreva "234 - 46"
escreva "234.3 - 45.7"
escreva "234.34 - 45.70"
escreva "234.345 - 45.698"
escreva "2.343450e+02 - 4.569800e+01"
escreva "2.343450E+02 - 4.569800E+01"
escreva "234.345 - 45.698"
escreva "234.345 - 45.698"
1962 - Há Muito, Muito Tempo Atrás
n = leia_inteiro
para i de 1 até n faça
a = leia_inteiro
se a < 2015 então
escreva "{2015 - a} D.C."
senão
escreva "{a - 2014} A.C."
fim
fim
ns = leia_texto
sucesso = ns.selecione(_ == '9').tamanho == 0
se sucesso então
escreva "S"
senão
escreva "F"
fim
1069 - Diamantes e Areia
n = leia_inteiro
para i de 1 ate n faca
s = leia_texto
var aberto, cont := 0
para a em s faca
se a == '>' e aberto > 0 entao
aberto := aberto - 1
cont := cont + 1
senaose a == '<' entao
aberto := aberto + 1
fim
fim
escreva cont
fim
3474 - Boa divisão
entrada = leia_reais(2)
valor = entrada[1]
divisor = entrada[2]
escreva(valor / divisor)
2879 - Desvendando Monty Hall
n = leia_inteiro
nums = leia_textos(n)
cont = nums.selecione(_ <> "1").tamanho
escreva cont
3227 - Doorman
contar(max, diferença: Inteiro, fila: Lista[Caractere], total: Inteiro): Inteiro
se diferença > max ou -diferença > max então
total - 1
senãose fila == [] então
total
senãose fila.pegue(2).tamanho == 2 então
a = fila.pegue(2)
se a[1] == a[2] ou a[1] == 'M' e diferença <= 0 ou a[1] <> 'M' e diferença >= 0 então
d = se fila[1] == 'M' então diferença + 1 senão diferença - 1 fim
contar(max, d, fila.cauda, total + 1)
senão
d = se fila[2] == 'M' então diferença + 1 senão diferença - 1 fim
contar(max, d, fila[1] :: fila.cauda.cauda, total + 1)
fim
senão
d = se fila[1] == 'M' então diferença + 1 senão diferença - 1 fim
contar(max, d, fila.cauda, total + 1)
fim
fim
n = leia_inteiro
fila = leia_texto.lista
escreva contar(n, 0, fila, 0)
1944 - BRINDE FACE 2015
inicial = ["E C A F"]
var painel := inicial
n = leia_inteiro
var brindes := 0
para i de 1 até n faça
a = leia_texto
se a == painel.cabeça então
painel := painel.cauda
brindes := brindes + 1
se painel == [] então
painel := inicial
fim
senão
painel := a.inverta :: painel
fim
fim
escreva brindes
3299 - Números Má Sorte Pequenos
a = leia_texto
b = a.lista.zip(a.cauda).selecione(_.primeiro == '1').selecione(_.segundo == '3').tamanho
se b > 0 entao
escreva "{a} es de Mala Suerte"
senao
escreva "{a} NO es de Mala Suerte"
fim
nome = leia_texto
fixo, vendas = leia_real
total = fixo + vendas * 0.15
escreva "TOTAL = R$ {total formato "%.2f"}"
1184 - Abaixo da Diagonal Principal
o = leia_texto
nums = leia_reais(144)
var soma := 0.0
para i de 0 até 11, j de 1 até i faça
soma := soma + nums[i * 12 + j]
fim
se o == "S" então
escreva soma formato "%.1f"
senão
escreva soma / 66 formato "%.1f"
fim
3405 - Fatorial
var n := leia_inteiro
var zeros := 0
enquanto n > 0 faça
n := n div 5
zeros := zeros + n
fim
escreva zeros
2690 - Nova Senha RA
n = leia_inteiro
letras = ["ISblv","EOYcmw","FPZdnx","JTeoy", "DNXfpz", "AKUgq", "CMWhr", "BLVis", "HRjt", "GQaku"]
para i de 1 até n faça
s = leia_texto.selecione(_ <> ' ').pegue(12)
para k em s, j de 1 até 10 faça
se letras[j].contém(k) então
imprima j mod 10
fim
fim
escreva ""
fim
2018 - Olimpíadas de Natal
tipo Pais
nome: Texto
ouro, prata, bronze: Inteiro
pontos = ouro * 1000000 + prata * 1000 + bronze
texto() = "{nome} {ouro} {prata} {bronze}"
fim
soma(a: Lista[Pais]): Pais
pontos = a.injete(0)(_ + _.pontos)
ouro = pontos div 1000000
prata = (pontos div 1000) mod 1000
bronze = pontos mod 1000
Pais(a[1].nome, ouro, prata, bronze)
fim
var paises: Lista[Pais] := []
leia_texto
enquanto nao eof faça
a, b, c = leia_texto
paises := Pais(a, 1, 0, 0) :: Pais(b, 0, 1, 0) :: Pais(c, 0, 0, 1) :: paises
leia_texto
fim
ordem = paises.ordene(_.nome)
.divida_quando(_.nome <> _.nome)
.mapeie(soma)
.ordene(_.nome)
.ordene(- _.pontos)
escreva "Quadro de Medalhas"
escreva ordem.mapeie(_.texto).junte("\n")
2866 - Criptotexto
n = leia_inteiro
para i de 1 ate n faca
a = leia_texto
b = a.selecione(_ > 96).inverta
escreva b
fim
1848 - Corvo Contador
para i de 1 ate 3 faca
var s := leia_texto
var soma := 0
enquanto s <> "caw caw" faca
se s[1] == '*' entao soma := soma + 4 fim
se s[2] == '*' entao soma := soma + 2 fim
se s[3] == '*' entao soma := soma + 1 fim
s := leia_texto
fim
escreva soma
fim
2059 - Ímpar, Par ou Roubo
in = leia_inteiros(" ")
p = in[1] == 1
par = (in[2] + in[3]) mod 2 == 0
r = in[4] == 1
a = in[5] == 1
jog2 = (r e a) ou (não r e não a e p <> par)
se jog2 então
escreva "Jogador 2 ganha!"
senão
escreva "Jogador 1 ganha!"
fim
1037 - Intervalo
a = leia_real
se a >= 0 e a <= 25
escreva "Intervalo [0,25]"
senaose a > 25 e a <= 50
escreva "Intervalo (25,50]"
senaose a > 50 e a <= 75
escreva "Intervalo (50,75]"
senaose a > 75 e a <= 100
escreva "Intervalo (75,100]"
senao
escreva "Fora de intervalo"
fim
2297 - Bafo
var r := leia_inteiro
var t := 0
enquanto r > 0 faça
var saldo := 0
para i de 1 ate r faça
rodada = leia_inteiros(" ")
saldo := saldo + rodada[1] - rodada[2]
fim
t := t + 1
escreva "Teste {t}
|{se saldo > 0 então "Aldo" senão "Beto" fim}
|"
r := leia_inteiro
fim
2238 - Divisores
s = leia_inteiros(" ")
a, b, c, d = s[1], s[2], s[3], s[4]
var n := -1
var i := a
enquanto i <= c e n == -1 faca
se i mod b <> 0 e c mod i == 0 e d mod i <> 0 entao
n := i
fim
i := i + a
fim
escreva n
1769 - CPF 1
pesos = [1,2,3,4,5,6,7,8,9]
sosep = pesos.inverta
verificadores(digitos: Lista[Inteiro])
soma1 = digitos.zip(pesos).mapeie(a => a.primeiro * a.segundo).injete(0)(_ + _)
soma2 = digitos.zip(sosep).mapeie(a => a.primeiro * a.segundo).injete(0)(_ + _)
b1 = soma1 mod 11 mod 10
b2 = soma2 mod 11 mod 10
retorne (b1, b2)
fim
var entrada := leia_texto
enquanto nao eof faça
a123 = entrada.pegue(3)
a456 = entrada.descarte(4).pegue(3)
a789 = entrada.descarte(8).pegue(3)
digitos = "{a123}{a456}{a789}".lista.mapeie(_ - '0')
v = verificadores(digitos)
b12 = "{v.primeiro}{v.segundo}"
se b12 == entrada.descarte(12) entao
escreva "CPF valido"
senao
escreva "CPF invalido"
fim
entrada := leia_texto
fim
2453 - Língua do P
decifrar(p: Texto) =
para i de 2 ate p.tamanho passo 2 gere p[i] fim.junte("")
palavras = leia_textos(" ")
mensagem = palavras.mapeie(decifrar).junte(" ")
escreva mensagem
2087 - Conjuntos Bons e Ruins
var n := leia_inteiro
enquanto n > 0 faca
palavras = leia_textos(n).ordene.mutavel
var bom := verdadeiro
var i := 1
enquanto i < n e bom faca
se palavras[i].tamanho <= palavras[i+1].tamanho e
palavras[i] == palavras[i+1].pegue(palavras[i].tamanho) entao
bom := falso
fim
i := i + 1
fim
se bom
entao escreva "Conjunto Bom"
senao escreva "Conjunto Ruim"
fim
n := leia_inteiro
fim
3047 - A idade de Dona Mônica
m, a, b = leia_inteiro
c = m - (a + b)
escreva [a, b, c].ordene.último
1014 - Consumo
a = leia_inteiro
b = leia_real
t = a / b
to = t formato "%.3f"
escreva "{to} km/l"