Pular para conteúdo

3000

Faixa de problemas: 3000-3099

Total resolvido: 34 de 100 problemas

3004 - Envelopes

Descrição do Problema: 3004 - Envelopes

Categoria: Matemática

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 então
    escreva "S"
  senão
    escreva "N"
  fim
fim

3005 - Pilhas de Paralelepípedos

Descrição do Problema: 3005 - Pilhas de Paralelepípedos

Categoria: Ad-Hoc

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

3011 - Quebra-Cabeça Algébrico

Descrição do Problema: 3011 - Quebra-Cabeça Algébrico

Categoria: Ad-Hoc

3011 - Quebra-Cabeça Algébrico
def op(simbolo: Caractere) = escolha simbolo
    caso '+' => (a, b: Inteiro) => a + b
    caso  _  => (a, b: Inteiro) => a - b
fim

s = "123456789"

expr = para i de 1 até 6, a em [s.pegue(i).inteiro],
            j de i + 1 até 7, b em [s.descarte(i).pegue(j-i).inteiro],
            k de j + 1 até 8, c em [s.descarte(j).pegue(k-j).inteiro], d em [s.descarte(k).inteiro],
            s1 em "+-", op1 em [op(s1)],
            s2 em "+-", op2 em [op(s2)],
            s3 em "+-", op3 em [op(s3)],
            valor em [op3(op2(op1(a, b), c), d)], expressao em ["{a}{s1}{b}{s2}{c}{s3}{d}"]
       gere
            (valor, expressao)
       fim.toMap

def min(a, b: Inteiro) = se a <= b então a senão b fim

limite = 100000
var m := leia_inteiro
enquanto m > 0 faça
    n = min(m, limite)
    m := m - limite 
    resp = para i de 1 até n gere
        d = leia_inteiro
        ex = expr(d)
        "{ex} = {d}"
    fim
    escreva resp.junte("\n")
fim

3024 - Mountain Ranges

Descrição do Problema: 3024 - Mountain Ranges

Categoria: Ad-Hoc · Maratona SBC (2ª fase) 2019

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

3034 - O Caso Douglas

Descrição do Problema: 3034 - O Caso Douglas

Categoria: Ad-Hoc

3034 - O Caso Douglas
primo(a: Inteiro)
  var resposta = verdadeiro
  para i de 3 até raiz(a).inteiro passo 2 faça
    se a mod i == 0 então
      resposta := falso
    fim
  fim
  retorne resposta
fim

n = leia_inteiro
para i de 1 até 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"
  senão
    escreva "No"
  fim
fim

3036 - Cor da Camisa

Descrição do Problema: 3036 - Cor da Camisa

Categoria: Matemática

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

3037 - Jogando Dardos Por Distância

Descrição do Problema: 3037 - Jogando Dardos Por Distância

Categoria: Iniciante

3037 - Jogando Dardos Por Distância
1
2
3
4
5
6
7
8
n = leia_inteiro
pontos() = para j de 1 até 3 gere
             leia_inteiros(" ").injete(1)(_ * _)
           fim.injete(0)(_ + _)
para i de 1 até n faça
  joao, maria = pontos
  escreva se joao > maria então "JOAO" senão "MARIA" fim
fim

3038 - Carta de Natal Criptografada

Descrição do Problema: 3038 - Carta de Natal Criptografada

Categoria: Strings

3038 - Carta de Natal Criptografada
var linha := leia_texto
enquanto não eof faça
  saida = para c em linha.lista gere
    escolha c
      caso  c  se não "@&!*#".contém(c) =>  c
      caso '&' => 'e'
      caso '!' => 'i'
      caso '*' => 'o'
      caso '#' => 'u'
      caso  _  => 'a'
    fim
  fim
  escreva saida.junte("")
  linha := leia_texto
fim

3039 - Brinquedos do Papai Noel

Descrição do Problema: 3039 - Brinquedos do Papai Noel

Categoria: Iniciante

3039 - Brinquedos do Papai Noel
1
2
3
4
5
6
7
8
n = leia_inteiro
var m := 0
para i de 1 até n faça
  a = leia_texto.ultimo
  se a == 'M' então m := m + 1 fim
fim
escreva "{m} carrinhos"
escreva "{n-m} bonecas"

3040 - A Árvore de Natal

Descrição do Problema: 3040 - A Árvore de Natal

Categoria: Iniciante

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

3042 - Desviando de Árvores de Natal

Descrição do Problema: 3042 - Desviando de Árvores de Natal

Categoria: Paradigmas

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

3043 - Festa Junina

Descrição do Problema: 3043 - Festa Junina

Categoria: Grafos · OBI 2003

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 faça
  var valores := [para i de 1 até n gere i fim]
  para i de 1 até n faça
    nums = leia_inteiros(" ")
    valores := flat(valores.mapeie(v =>
      se v - nums == v ou v - [i] == v então [v]
      senão [v - [i], v - nums]
      fim))
  fim
  t := t + 1
  r = valores.mapeie(_.tamanho).ordene.ultimo
  escreva "Teste {t}"
  escreva r
  escreva ""
  n := leia_inteiro
fim

3046 - Dominó

Descrição do Problema: 3046 - Dominó

Categoria: Iniciante · OBI 2019

3046 - Dominó
1
2
3
n = leia_inteiro
r = (n + 1) * (n + 2) div 2
escreva r

3047 - A idade de Dona Mônica

Descrição do Problema: 3047 - A idade de Dona Mônica

Categoria: Iniciante · OBI 2019

3047 - A idade de Dona Mônica
1
2
3
m, a, b = leia_inteiro
c = m - (a + b)
escreva [a, b, c].ordene.último

3048 - Sequência Secreta

Descrição do Problema: 3048 - Sequência Secreta

Categoria: Ad-Hoc · OBI 2019

3048 - Sequência Secreta
n = leia_inteiro
var a, s := 0
para i de 1 até n faça
  v = leia_inteiro
  se v <> a então
    a := v
    s := s + 1
  fim
fim
escreva s

3049 - Nota Cortada

Descrição do Problema: 3049 - Nota Cortada

Categoria: Matemática · OBI 2019

3049 - Nota Cortada
1
2
3
4
b, t = leia_inteiro
soma = b + t
valor = se soma > 160 então 1 senãose soma < 160 então 2 senão 0 fim
escreva valor

3050 - Distância Entre Amigos

Descrição do Problema: 3050 - Distância Entre Amigos

Categoria: Ad-Hoc · OBI 2019

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 até n faça
  se a[i-1] >= a[x] + i - x então j:= i - 1 fim
  se d(j, i) >= dxy então
    x, y := j, i
    dxy := d(x, y)
  fim
fim
escreva dxy

3053 - Jogo Dos Copos

Descrição do Problema: 3053 - Jogo Dos Copos

Categoria: Iniciante · OBI 2019

3053 - Jogo Dos Copos
n = leia_inteiro
z = leia_texto

var a, b, c := z == "A", z == "B", z == "C"

para i de 1 até 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

3055 - Nota Esquecida

Descrição do Problema: 3055 - Nota Esquecida

Categoria: Iniciante · OBI 2019

3055 - Nota Esquecida
1
2
3
a, m = leia_inteiro
b = m * 2 - a
escreva b

3056 - Ponto do Meio

Descrição do Problema: 3056 - Ponto do Meio

Categoria: Ad-Hoc · OBI 2019

3056 - Ponto do Meio
1
2
3
4
5
6
7
8
9
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 até n faça
  lado := 2 * lado - 1
fim
escreva lado * lado

3058 - Supermercado

Descrição do Problema: 3058 - Supermercado

Categoria: Ad-Hoc · OBI 2019

3058 - Supermercado
1
2
3
4
5
6
7
8
9
n = leia_inteiro
var menor := 10000000.0
para i de 1 até n faça
  a = leia_reais(" ")
  p, g = a[1], a[2]
  valor = p * 1000 / g
  se valor < menor então menor := valor fim
fim
escreva menor formato "%.2f"

3059 - Pares de Números

Descrição do Problema: 3059 - Pares de Números

Categoria: Ad-Hoc · OBI 2019

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)

3060 - Parcelamento Sem Juros

Descrição do Problema: 3060 - Parcelamento Sem Juros

Categoria: Ad-Hoc · OBI 2019

3060 - Parcelamento Sem Juros
1
2
3
4
5
n, p = leia_inteiro
parcela = n div p
resto = n mod p
para i de 1 até resto faça escreva parcela + 1 fim
para i de resto + 1 até p faça escreva parcela fim

3065 - Calculando

Descrição do Problema: 3065 - Calculando

Categoria: Iniciante · OBI 2001

3065 - Calculando
var m:= leia_inteiro
var teste := 0
enquanto m > 0 faça
  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

3068 - Meteoros

Descrição do Problema: 3068 - Meteoros

Categoria: Geometria Computacional · OBI 2001

3068 - Meteoros
var linha := leia_inteiros(" ")
var t := 0
enquanto linha <> [0, 0, 0, 0] faça
  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 até n faça
    a = leia_inteiros(" ")
    x, y = a[1], a[2]
    se x1 <= x e x <= x2 e y1 >= y e y >= y2 então
      cont := cont + 1
    fim
  fim
  escreva "Teste {t}"
  escreva cont
  linha := leia_inteiros(" ")
fim

3076 - Exercício de História

Descrição do Problema: 3076 - Exercício de História

Categoria: Iniciante

3076 - Exercício de História
1
2
3
4
5
6
var n := leia_inteiro
enquanto n > 0 faça
  seculo = (n + 99) div 100
  escreva seculo
  n := leia_inteiro
fim

3084 - Relógio Antigo

Descrição do Problema: 3084 - Relógio Antigo

Categoria: Iniciante

3084 - Relógio Antigo
1
2
3
4
5
6
7
var a := leia_inteiros(" ")
enquanto não eof faça
  hora   = a[1] div 30
  minuto = a[2] div 6
  escreva "{hora formato "%02d"}:{minuto formato "%02d"}"
  a := leia_inteiros(" ")
fim

3088 - Correção de Texto

Descrição do Problema: 3088 - Correção de Texto

Categoria: Strings

3088 - Correção de Texto
corrija(s: Texto): Texto =
  se s.tamanho < 2 então s
  senão
    se s[1] == ' ' e (s[2] == ',' ou s[2] == '.') então
      "{s[2]}{corrija(s.descarte(2))}"
    senão
      "{s[1]}{corrija(s.descarte(1))}"
    fim
  fim

var a := leia_texto
enquanto a <> "" faça
  escreva corrija(a)
  a := leia_texto
fim

3089 - Presentes de Natal

Descrição do Problema: 3089 - Presentes de Natal

Categoria: Iniciante

3089 - Presentes de Natal
var n := leia_inteiro
enquanto n > 0 faça
  x = leia_inteiros(" ")
  a = x.ordene
  var menor, maior := a[n] + a[n+1]
  para i de 1 até n faça
    b = a[i] + a[2 * n - i + 1]
    se b < menor então menor := b
    senãose b > maior então maior := b
    fim
  fim
  escreva "{maior} {menor}"
  n := leia_inteiro
fim

3090 - Campo de Batalha

Descrição do Problema: 3090 - Campo de Batalha

Categoria: Ad-Hoc

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}"

3091 - Resto 1.0

Descrição do Problema: 3091 - Resto 1.0

Categoria: Iniciante

3091 - Resto 1.0
a, b = leia_inteiro
escreva a mod b

3092 - Truco da Galera 2.0

Descrição do Problema: 3092 - Truco da Galera 2.0

Categoria: Ad-Hoc

3092 - Truco da Galera 2.0
n = leia_inteiro
para i de 1 até n faça
  s = leia_texto
  var q, j, k, a := 0
  para c em s faça
    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 então
    escreva "Agora vai"
  senão
    escreva "Agora apertou sem abracar"
  fim
fim

3093 - Truco da Galera 1.0

Descrição do Problema: 3093 - Truco da Galera 1.0

Categoria: Ad-Hoc

3093 - Truco da Galera 1.0
n = leia_inteiro
para i de 1 até n faça
  s = leia_texto
  t = s.tamanho - 4
  se (s - "QJKA").tamanho == t então
    escreva "Aaah muleke"
  senão
    escreva "Ooo raca viu"
  fim
fim

3094 - Truco da Galera 3.0

Descrição do Problema: 3094 - Truco da Galera 3.0

Categoria: Ad-Hoc

3094 - Truco da Galera 3.0
n = leia_inteiro
para i de 1 até n faça
  s = leia_texto
  var sete, q, j, k, a := 0
  para c em s faça
    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