2100
Faixa de problemas: 2100-2199
Total resolvido: 39 de 100 problemas
Problemas não resolvidos (61)
2100 , 2101 , 2102 , 2103 , 2105 , 2106 , 2107 , 2109 , 2110 , 2111 , 2112 , 2113 , 2114 , 2115 , 2117 , 2118 , 2119 , 2120 , 2121 , 2122 , 2123 , 2124 , 2125 , 2127 , 2128 , 2130 , 2131 , 2132 , 2133 , 2134 , 2135 , 2141 , 2142 , 2144 , 2145 , 2148 , 2151 , 2155 , 2156 , 2169 , 2171 , 2173 , 2177 , 2178 , 2179 , 2181 , 2182 , 2183 , 2184 , 2185 , 2186 , 2190 , 2191 , 2192 , 2193 , 2194 , 2195 , 2196 , 2197 , 2198 , 2199
2104 - Lasers
Descrição do Problema: 2104 - Lasers
Categoria: Geometria Computacional
2104 - Lasers tipo Ponto = ( Real , Real )
tipo Pontos = Lista [ Ponto ]
def cross ( a , b , c : Ponto ) =
( b . primeiro - a . primeiro ) * ( c . segundo - a . segundo ) -
( b . segundo - a . segundo ) * ( c . primeiro - a . primeiro )
def cons ( pontos : Pontos , ponto : Ponto ): Pontos =
se pontos . tamanho < 2 ou cross ( pontos [ 2 ], pontos [ 1 ], ponto ) > 0
então ponto :: pontos
senão cons ( pontos . cauda , ponto )
fim
val vazia : Pontos = []
def constroi ( pontos : Pontos ) = pontos . injete ( vazia )( cons ) . inverta
def fecho ( pontos : Pontos )
p = pontos . ordene
baixo = constroi ( p )
cima = constroi ( p . inverta )
retorne ( baixo . cauda + cima . cauda ) . inverta
fim
def area ( pontos : Pontos ) = soma ( pontos , pontos . cabeça , 0.0 ) . abs / 2
def termo ( p , q : Ponto ) = p . primeiro * q . segundo - q . primeiro * p . segundo
def soma ( pontos : Pontos , primeiro : Ponto , acumulado : Real ): Real =
escolha pontos
caso [] => acumulado
caso [ p ] => acumulado + termo ( p , primeiro )
caso p :: ps => soma ( ps , primeiro , acumulado + termo ( p , ps . cabeça ))
fim
def projeção ( xp , yp , zp : Real ) = ( x , y , z : Real ) =>
( xp + ( x - xp ) * zp / ( zp - z ), yp + ( y - yp ) * zp / ( zp - z ))
var n := leia_inteiro
enquanto n > 0 faça
a = leia_reais ( " " )
proj = projeção ( a [ 1 ], a [ 2 ], a [ 3 ])
pontos = para i de 1 até n gere
b = leia_reais ( " " )
proj ( b [ 1 ], b [ 2 ], b [ 3 ])
fim
escreva area ( fecho ( pontos )) formato "%.2f"
n := leia_inteiro
fim
2108 - Contando Caracters
Descrição do Problema: 2108 - Contando Caracters
Categoria: Strings
2108 - Contando Caracters var s := leia_textos ( " " )
var maior := ""
enquanto s [ 1 ] <> "0" faça
escreva s . mapeie ( _ . tamanho ) . junte ( "-" )
maior := s . injete ( maior )(( a , b ) => se a . tamanho > b . tamanho então a senão b fim )
s := leia_textos ( " " )
fim
escreva ""
escreva "The biggest word: { maior } "
2116 - Diversão dos Alunos
Descrição do Problema: 2116 - Diversão dos Alunos
Categoria: Ad-Hoc
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 até m gere i fim
primos = crivo ( ints ) . inverta
p1 = primos . descarte_enquanto ( _ > n ) . cabeca
p2 = primos . descarte_enquanto ( _ > m ) . cabeca
escreva p1 * p2
2126 - Procurando Subsequências
Descrição do Problema: 2126 - Procurando Subsequências
Categoria: Iniciante
2126 - Procurando Subsequências var t := 0
var n1 , n2 := leia_texto
enquanto não 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
2129 - Fatorial
Descrição do Problema: 2129 - Fatorial
Categoria: Matemática
2129 - Fatorial remove_zeros ( a : Long ): Long =
se a mod 10 == 0 e a > 0
então remove_zeros ( a div 10 )
senão a
fim
var a : Long := 1
num =
para i de 1 até 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
2136 - Amigos do Habay
Descrição do Problema: 2136 - Amigos do Habay
Categoria: Estruturas e Bibliotecas · Olimpíada IFSULDEMINAS 2016
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" faça
se entrada [ 2 ] == "YES" então
yes := entrada [ 1 ] :: yes
se entrada [ 1 ] . tamanho > amigo . tamanho então
amigo := entrada [ 1 ]
fim
senão
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
2137 - A Biblioteca do Senhor Severino
Descrição do Problema: 2137 - A Biblioteca do Senhor Severino
Categoria: Strings · Olimpíada IFSULDEMINAS 2016
2137 - A Biblioteca do Senhor Severino var n := leia_inteiro
enquanto n > 0 faça
s = leia_textos ( n )
escreva s . ordene . junte ( "\n" )
n := leia_inteiro
fim
2138 - Dígito Mais Frequente
Descrição do Problema: 2138 - Dígito Mais Frequente
Categoria: Ad-Hoc · Olimpíada IFSULDEMINAS 2016
2138 - Dígito Mais Frequente var a := leia_texto
enquanto não 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
2139 - Natal de Pedrinho
Descrição do Problema: 2139 - Natal de Pedrinho
Categoria: Iniciante · Olimpíada IFSULDEMINAS 2016
2139 - Natal de Pedrinho var entrada := leia_texto
var dias := 0
enquanto não 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
2140 - Duas Notas
Descrição do Problema: 2140 - Duas Notas
Categoria: Iniciante · Olimpíada IFSULDEMINAS 2016
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
2143 - A Volta do Radar
Descrição do Problema: 2143 - A Volta do Radar
Categoria: Iniciante · Olimpíada IFSULDEMINAS 2016
2143 - A Volta do Radar var t := leia_inteiro
enquanto t > 0 faça
para i de 1 até t faça
n = leia_inteiro
se n mod 2 == 0 então
escreva 2 * n - 2
senão
escreva n div 2 * 4 + 1
fim
fim
t := leia_inteiro
fim
2146 - Senha
Descrição do Problema: 2146 - Senha
Categoria: Iniciante · Olimpíada IFSULDEMINAS 2016
2146 - Senha var n := leia_inteiro
enquanto n > 0 faça
escreva n - 1
n := leia_inteiro
fim
2147 - Galopeira
Descrição do Problema: 2147 - Galopeira
Categoria: Iniciante · Olimpíada IFSULDEMINAS 2016
2147 - Galopeira c = leia_inteiro
para i de 1 até c faça
t = leia_texto
escreva t . tamanho / 100 formato "%.2f"
fim
2149 - Sequência do Tio Phill Bonati
Descrição do Problema: 2149 - Sequência do Tio Phill Bonati
Categoria: Matemática · Olimpíada IFSULDEMINAS 2016
2149 - Sequência do Tio Phill Bonati vet ( x , y : BigInt , n : Inteiro ): Lista [ BigInt ] =
se n >= 18 então []
senão
c = se n mod 2 == 0 então x * y senão x + y fim
c :: vet ( y , c , n + 1 )
fim
v = 0 :: 1 :: vet ( 0 , 1 , 3 )
var a := leia_inteiro
enquanto a > 0 faça
escreva v [ a ]
a := leia_inteiro
fim
2150 - Vogais Alienígenas
Descrição do Problema: 2150 - Vogais Alienígenas
Categoria: Strings · Olimpíada IFSULDEMINAS 2016
2150 - Vogais Alienígenas var vogais , entrada := leia_texto
enquanto não eof faça
var linha := entrada
var diff := linha - vogais
enquanto diff <> linha faça
linha := linha - vogais
diff := linha - vogais
fim
escreva entrada . tamanho - linha . tamanho
vogais , entrada := leia_texto
fim
2152 - Pepe, Já Tirei a Vela!
Descrição do Problema: 2152 - Pepe, Já Tirei a Vela!
Categoria: Iniciante · Olimpíada IFSULDEMINAS 2016
2152 - Pepe, Já Tirei a Vela! n = leia_inteiro
para i de 1 até n faça
a = leia_inteiros ( " " )
hora , minuto , porta = a [ 1 ], a [ 2 ], a [ 3 ]
horario = " { hora formato "%02d" } : { minuto formato "%02d" } "
se porta == 1 então
escreva " { horario } - A porta abriu!"
senão
escreva " { horario } - A porta fechou!"
fim
fim
2153 - Sanduicheiche
Descrição do Problema: 2153 - Sanduicheiche
Categoria: Strings · Olimpíada IFSULDEMINAS 2016
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
2154 - Derivada de Polinômios
Descrição do Problema: 2154 - Derivada de Polinômios
Categoria: Matemática · Olimpíada IFSULDEMINAS 2016
2154 - Derivada de Polinômios expoente ( n : Inteiro ) = se n > 1 então n . texto senão "" 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
2157 - Sequência Espelho
Descrição do Problema: 2157 - Sequência Espelho
Categoria: Strings · Olimpíada IFSULDEMINAS 2016
2157 - Sequência Espelho c = leia_inteiro
para i de 1 até c faça
a = leia_inteiros ( " " )
m , n = a [ 1 ], a [ 2 ]
s = para j de m até n gere j fim . junte ( "" )
escreva s + s . inverta
fim
2158 - Ajudando o Tio Cláudio
Descrição do Problema: 2158 - Ajudando o Tio Cláudio
Categoria: Geometria Computacional
2158 - Ajudando o Tio Cláudio var c := 0
var entrada := leia_texto
enquanto não eof faça
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
2159 - Número Aproximado de Primos
Descrição do Problema: 2159 - Número Aproximado de Primos
Categoria: Iniciante
2159 - Número Aproximado de Primos n = leia_inteiro
p = n / log ( n )
m = 1.25506 * p
escreva " { p formato "%.1f" } { m formato "%.1f" } "
Descrição do Problema: 2160 - Nome no Formulário
Categoria: Iniciante
2160 - Nome no Formulário s = leia_texto
se s . tamanho <= 80 então
escreva "YES"
senão
escreva "NO"
fim
2161 - Raiz Quadrada de 10
Descrição do Problema: 2161 - Raiz Quadrada de 10
Categoria: Iniciante
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"
2162 - Picos e Vales
Descrição do Problema: 2162 - Picos e Vales
Categoria: Iniciante
2162 - Picos e Vales n = leia_inteiro
nums = leia_inteiros ( " " )
op = se nums [ 1 ] > nums [ 2 ] então
( 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
2163 - O Despertar da Força
Descrição do Problema: 2163 - O Despertar da Força
Categoria: Iniciante
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 até n - 1 faça
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" ) então
p1 , p2 , p3 = l1 . divida ( " " ), l2 . divida ( " " ), l3 . divida ( " " )
para j de 2 até m - 1 faça
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" então
x , y := i , j
fim
fim
fim
fim
escreva " { x } { y } "
2164 - Fibonacci Rápido
Descrição do Problema: 2164 - Fibonacci Rápido
Categoria: Iniciante
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" } "
2165 - Tuitando
Descrição do Problema: 2165 - Tuitando
Categoria: Iniciante
2165 - Tuitando n = leia_texto
se n . tamanho <= 140 então
escreva "TWEET"
senão
escreva "MUTE"
fim
2166 - Raiz Quadrada de 2
Descrição do Problema: 2166 - Raiz Quadrada de 2
Categoria: Iniciante
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"
2167 - Falha do Motor
Descrição do Problema: 2167 - Falha do Motor
Categoria: Iniciante
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
2168 - Crepúsculo em Portland
Descrição do Problema: 2168 - Crepúsculo em Portland
Categoria: Iniciante
2168 - Crepúsculo em Portland n = leia_inteiro
var 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
2170 - Juros do Projeto
Descrição do Problema: 2170 - Juros do Projeto
Categoria: Matemática
2170 - Juros do Projeto var t := 1
var a := leia_texto
enquanto não eof faça
b = a . divida ( " " ) . mapeie ( _ . real )
x , y = b [ 1 ], b [ 2 ]
juros = ( y / x - 1 ) * 100
escreva "Projeto { t } :"
escreva "Percentual dos juros da aplicacao: { juros formato "%.2f" } %"
escreva ""
a := leia_texto
t := t + 1
fim
2172 - Evento
Descrição do Problema: 2172 - Evento
Categoria: Iniciante
2172 - Evento var entrada := leia_inteiros ( " " )
enquanto entrada [ 2 ] <> 0 faça
escreva entrada [ 1 ] * entrada [ 2 ]
entrada := leia_inteiros ( " " )
fim
2174 - Coleção de Pomekon
Descrição do Problema: 2174 - Coleção de Pomekon
Categoria: Strings
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)."
2175 - Qual o Mais Rápido?
Descrição do Problema: 2175 - Qual o Mais Rápido?
Categoria: Ad-Hoc
2175 - Qual o Mais Rápido? a = leia_reais ( " " )
o , b , i = a [ 1 ], a [ 2 ], a [ 3 ]
se o < b e o < i então
escreva "Otavio"
senãose b < o e b < i então
escreva "Bruno"
senãose i < o e i < b então
escreva "Ian"
senão
escreva "Empate"
fim
2176 - Paridade
Descrição do Problema: 2176 - Paridade
Categoria: Iniciante
2176 - Paridade a = leia_texto
imprima a
escreva a . selecione ( _ == '1' ) . tamanho mod 2
2180 - Viagem à Marte na Velocidade de Primo
Descrição do Problema: 2180 - Viagem à Marte na Velocidade de Primo
Categoria: Matemática
2180 - Viagem à Marte na Velocidade de Primo primo ( n : Inteiro ): Lógico =
n mod 2 > 0 e ( para i de 2 até 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"
2187 - Bits Trocados
Descrição do Problema: 2187 - Bits Trocados
Categoria: Ad-Hoc · OBI 2000
2187 - Bits Trocados var t := 0
var v := leia_inteiro
enquanto v > 0 faça
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
2188 - Macaco-prego
Descrição do Problema: 2188 - Macaco-prego
Categoria: Ad-Hoc · OBI 2000
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
2189 - Quermesse
Descrição do Problema: 2189 - Quermesse
Categoria: Ad-Hoc · OBI 2000
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