Pular para conteúdo

1300

Faixa de problemas: 1300-1399

Total resolvido: 24 de 100 problemas

1300 - Horas e Minutos

Descrição do Problema: 1300 - Horas e Minutos

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

1300 - Horas e Minutos
1
2
3
4
5
6
7
8
9
var angulo := leia_inteiro
enquanto não eof faça
  se angulo mod 6 == 0 então
    escreva "Y"
  senão
    escreva "N"
  fim
  angulo := leia_inteiro
fim

1303 - Spurs Rocks

Descrição do Problema: 1303 - Spurs Rocks

Categoria: Estruturas e Bibliotecas

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

1304 - Velocidade Média

Descrição do Problema: 1304 - Velocidade Média

Categoria: Matemática

1304 - Velocidade Média
var distance := 0.0
var last_time := 0
var speed := 0.0

var parts := leia_textos(" ")
enquanto não eof faça
  hora = parts[1].divida(":").mapeie(_.inteiro)
  h, m, s = hora[1], hora[2], hora[3]
  current_time = h * 3600 + m * 60 + s
  distance := distance + (current_time - last_time) * speed / 3600
  se parts.tamanho == 2 então
    speed := parts[2].real
    last_time := current_time
  senão
    escreva "{parts[1]} {distance formato "%.2f"} km"
    last_time := current_time
  fim
  parts := leia_textos(" ")
fim

1305 - Arredondamento por Valor de Corte

Descrição do Problema: 1305 - Arredondamento por Valor de Corte

Categoria: Strings

1305 - Arredondamento por Valor de Corte
1
2
3
4
5
6
7
8
9
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

1306 - Numerando Estradas

Descrição do Problema: 1306 - Numerando Estradas

Categoria: Matemática

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

1307 - Tudo o que Você Precisa é Amor

Descrição do Problema: 1307 - Tudo o que Você Precisa é Amor

Categoria: Matemática

1307 - Tudo o que Você Precisa é Amor
bin2dec(s: Texto): Inteiro =
  para i de 1 até 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 até 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

1308 - Guerreiros Etruscos Nunca Jogam Xadrez

Descrição do Problema: 1308 - Guerreiros Etruscos Nunca Jogam Xadrez

Categoria: Matemática

1308 - Guerreiros Etruscos Nunca Jogam Xadrez
1
2
3
4
5
6
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

1309 - Formatação Monetária

Descrição do Problema: 1309 - Formatação Monetária

Categoria: Matemática

1309 - Formatação Monetária
var dolares := leia_inteiro
enquanto não eof faça
  centavos = leia_inteiro
  s0 = dolares.texto
  s1 = se s0.tamanho > 3  então s0.insira(s0.tamanho - 2 , ',') senão s0 fim
  s2 = se s1.tamanho > 7  então s1.insira(s1.tamanho - 6 , ',') senão s1 fim
  s3 = se s2.tamanho > 11 então s2.insira(s2.tamanho - 10, ',') senão s2 fim
  escreva "${s3}.{centavos formato "%02d"}"
  dolares := leia_inteiro
fim

1310 - Lucro

Descrição do Problema: 1310 - Lucro

Categoria: Paradigmas

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

1318 - Bilhetes Falsos

Descrição do Problema: 1318 - Bilhetes Falsos

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

1318 - Bilhetes Falsos
1
2
3
4
5
6
var a := leia_inteiro
enquanto a > 0 faça
  t = leia_inteiros(" ").ordene.divida_quando((x, y) => x <> y)
  escreva t.selecione(_.tamanho > 1).tamanho
  a := leia_inteiro
fim

1321 - Jollo

Descrição do Problema: 1321 - Jollo

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

1321 - Jollo
var usadas := leia_inteiros(" ")

enquanto usadas <> [0, 0, 0, 0, 0] faça
  var princesa = usadas.pegue(3).ordene
  var resposta := -1
  var z := 1

  enquanto z <= 52 e resposta == -1 faça
    se não usadas.contém(z) então
      principe = (z::usadas.descarte(3)).ordene
      var vitorias := 
          (se principe[3] > princesa[1] então 1 senão 0 fim) +
          (se principe[2] > princesa[3] então 1 senão 0 fim) +
          (se principe[1] > princesa[2] então 1 senão 0 fim)

      se vitorias >= 2 então
        resposta := z
      fim
    fim

    z := z + 1
  fim

  escreva resposta
  usadas := leia_inteiros(" ")
fim

1323 - Feynman

Descrição do Problema: 1323 - Feynman

Categoria: Matemática · Maratona SBC (2ª fase) 2008

1323 - Feynman
1
2
3
4
5
6
7
8
9
var a = Lista(100, 1)
para i de 2 até 100 faça
  a[i] := a[i-1] + i * i
fim
var n := leia_inteiro
enquanto n > 0 faça
  escreva a[n]
  n := leia_inteiro
fim

1329 - Cara ou Coroa

Descrição do Problema: 1329 - Cara ou Coroa

Categoria: Ad-Hoc · Maratona SBC (1ª fase) 2004

1329 - Cara ou Coroa
1
2
3
4
5
6
7
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

1332 - Um-Dois-Três

Descrição do Problema: 1332 - Um-Dois-Três

Categoria: Strings

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

1337 - Poker do Rei

Descrição do Problema: 1337 - Poker do Rei

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

1337 - Poker do Rei
var king := leia_inteiros(" ").ordene
enquanto king[1] > 0 faça
  a, b, c = king[1], king[2], king[3]

  resposta = se a == 13          então "*"
        senãose a == c           então "{a+1} {a+1} {a+1}"
        senãose a < b e b < c    então "1 1 2"
        senãose b < c e c == 13  então "1 {a+1} {a+1}"
        senãose b < c            então "{a} {a} {c+1}"
        senãose a == 12          então "1 1 1"
        senãose a + 1 < b        então "{a+1} {b} {c}"
                                 senão "{b} {b} {a+2}"
  fim
  escreva resposta
  king := leia_inteiros(" ").ordene
fim

1340 - Eu Posso Adivinhar a Estrutura de Dados!

Descrição do Problema: 1340 - Eu Posso Adivinhar a Estrutura de Dados!

Categoria: Estruturas e Bibliotecas

1340 - Eu Posso Adivinhar a Estrutura de Dados!
var n := leia_inteiro
enquanto não eof faça
  var pilha, fila, prioridade := Lista(0, 0)
  var estrutura := Lista(4, 1)
  estrutura[4] := 0
  para i de 1 até n faça
    a = leia_inteiros(" ")
    t, x = a[1], a[2]
    se t == 1 então
      pilha      := x :: pilha
      fila       := x :: fila
      prioridade := x :: prioridade
    senão # t == 2
      fila := fila.inverta
      prioridade := prioridade.ordene.inverta
      se x <> fila.cabeca então estrutura[1] := 0 fim
      se x <> pilha.cabeca então estrutura[2] := 0 fim
      se x <> prioridade.cabeca então estrutura[3] := 0 fim
      se pilha == [] ou x <> fila.cabeca e x <> pilha.cabeca e x <> prioridade.cabeca então 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

1366 - Jogo de Varetas

Descrição do Problema: 1366 - Jogo de Varetas

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

1366 - Jogo de Varetas
var n := leia_inteiro
enquanto n > 0 faça
    var pares := 0
    para i de 1 até n faça
        v = leia_inteiros(" ")[2] div 2
        pares := pares + v
    fim
    retangulos = pares div 2
    escreva retangulos
    n := leia_inteiro
fim

1371 - Fechem as Portas!

Descrição do Problema: 1371 - Fechem as Portas!

Categoria: Matemática · Maratona SBC (1ª fase) 2006

1371 - Fechem as Portas!
1
2
3
4
5
6
7
8
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

1379 - Problema com Mediana e Média

Descrição do Problema: 1379 - Problema com Mediana e Média

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

1379 - Problema com Mediana e Média
1
2
3
4
5
var a := leia_inteiros(" ")
enquanto a <> [0, 0] faça
  escreva 2 * a[1] - a[2]
  a := leia_inteiros(" ")
fim

1383 - Sudoku

Descrição do Problema: 1383 - Sudoku

Categoria: Ad-Hoc

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

1387 - Og

Descrição do Problema: 1387 - Og

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

1387 - Og
1
2
3
4
5
6
var entrada := leia_inteiros(" ")
enquanto entrada[1] > 0 faça
  l, r = entrada[1], entrada[2]
  escreva l + r
  entrada := leia_inteiros(" ")
fim

1393 - Lajotas Hexagonais

Descrição do Problema: 1393 - Lajotas Hexagonais

Categoria: Matemática · Maratona SBC (2ª fase) 2009

1393 - Lajotas Hexagonais
lajotas(a: Lista[Inteiro]): Lista[Inteiro] =
  se      a.tamanho < 2   então lajotas([2, 1])
  senãose a.tamanho >= 40 então a.inverta
  senão                         lajotas((a[1] + a[2]) :: a)
  fim

l = lajotas([])

var n := leia_inteiro
enquanto n > 0 faça
  escreva l[n]
  n := leia_inteiro
fim

1397 - Jogo do Maior

Descrição do Problema: 1397 - Jogo do Maior

Categoria: Ad-Hoc

1397 - Jogo do Maior
var n := leia_inteiro
enquanto n > 0 faça
  var a, b := 0
  para i de 1 até n faça
    jogo = leia_texto
    se jogo.tamanho == 3 então
      se jogo[1] > jogo[3] então a := a + 1 fim
      se jogo[1] < jogo[3] então b := b + 1 fim
    senãose jogo.tamanho == 4 então
      se jogo[3] == ' ' então
        a := a + 1
      senão
        b := b + 1
      fim
    fim
  fim
  escreva "{a} {b}"
  n := leia_inteiro
fim

1398 - Oceano Profundo! Faça-o Raso!!

Descrição do Problema: 1398 - Oceano Profundo! Faça-o Raso!!

Categoria: Matemática

1398 - Oceano Profundo! Faça-o Raso!!
primo = 131071

var entrada := leia_texto
enquanto não eof faça
    enquanto entrada.ultimo <> '#' faça
        entrada := entrada + leia_texto
    fim
    entrada := entrada.pegue(entrada.tamanho - 1)
    var num := 0
    para d em entrada faça
        num := (2 * num + (d - '0')) mod primo
    fim
    se num == 0 
        então escreva "YES"
        senão escreva "NO"
    fim
    entrada := leia_texto
fim