Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador Python. Mostrar todas as postagens
Mostrando postagens com marcador Python. Mostrar todas as postagens

quinta-feira, 24 de fevereiro de 2022

URI (BEECROWD) - 3344 - Brute - Iniciante - Ruby, Python, Python3, C e C++

Outro exercício novo resolvido! Esse é o Brute, que só precisa imprimir um valor. Quem mais conseguiu fazer esse?

Antes de resolver qualquer algoritmo do URI (BEECROWD agora), recomendamos seguir os seguintes passos:

  1. Ler todo enunciado do problema.
  2. Ler os tópicos do fórum em caso de dúvidas
  3. Preparar arquivos de entrada para teste, considerando as entradas de exemplo do URI, do udebug e outros valores limite;
  4. Preparar o ambiente de desenvolvimento e utilizar os mesmos parâmetros dos compiladores do URI
  5. Preparar um código-fonte padrão, já contendo a chamada às bibliotecas padrão, pré-processadores, retorno de função e um comando de escrita com "\n", pois no URI a grande maioria dos problemas exige a quebra de linha final.


Plataforma
: URI (BEECROWD)

Problema3344

Enunciado:

Bruno, interessado em aprender inglês, decidiu se matricular no BRUTE (Brazilian University of Theorical English) e logo no primeiro semestre se deparou com a seguinte função na aula de MDI (Matemática do Inglês):

Seja a função f:NN, que recebe x e retorna a quantidade de caracteres do valor escrito por extenso.

Por exemplo:

  • f(5)=len(FIVE)=4
  • f(100)=len(ONE HUNDRED)=11

A professora de MDI, Kaqui, propôs o seguinte exercício para Bruno:

Dado um inteiro x, o resultado da primeira iteração na função f, utilizando x, é f(x), da segunda iteração f(f(x)), da terceira é f(f(f(x))) e assim por diante. Qual o resultado da 1000ª iteração?

Linguagens: Ruby, Python, Python3, C e C++

Solução:

Basta imprimir o valor 4.

Código em Ruby:
puts "4"

Código em Python:

print "4"
# Esse foi difícil, hein?!

Código em Python3:
print("4")

Código em C:
#include <stdio.h>
int main() {
    printf("4\n");
    return 0;
}

Código em C++:
#include <iostream>
int main() {
    std::cout << "4" << std::endl;
    return 0;
}

quarta-feira, 24 de março de 2021

URI (BEECROWD) - 1002 - Área do Círculo - Iniciante - JavaScript, Python3, Haskell, C e C++

Plataforma: URI (BEECROWD)

Problema1002

Linguagens: JavaScript, Python3, C e C++

Enunciado:

A fórmula para calcular a área de uma circunferência é: area = π . raio2. Considerando para este problema que π = 3.14159:

- Efetue o cálculo da área, elevando o valor de raio ao quadrado e multiplicando por π.

Solução:

Esse é um dos exercícios mais simples da plataforma, ideal para quem está começando no mundo da programação. Resolvi ele em três linguagens diferentes até o momento: JavaScript, Python3, C e C++.

A solução em JavaScript tem as duas primeiras linhas que são padrão. No URI você precisa ler o arquivo de texto da entrada padrão e dividir os dados de entrada, linha a linha, jogando isso para um array chamado lines. Basicamente é isso que é feito nas duas primeiras linhas. Considere que elas serão obrigatórias nas suas soluções de problemas com a linguagem JavaScript.

De acordo com a documentação, "o método shift() remove o primeiro elemento de um array e retorna esse elemento. Este método muda o tamanho do array". Como nosso array terá (em tese) somente um valor, pelo menos tomando como base os arquivos de entrada que estão no exemplo do exercício, isso não será problema, pois estamos armazenando o valor na variável r, com o devido cast realizado para que o valor seja um número (number).

Criamos então uma variável para o resultado (res), que faz o cálculo necessário para a área do círculo (pi x r²) e fixa a precisão em quatro casas decimais utilizando toFixed com parâmetro 4.

Depois disso é só usar o comando de escrita console.log no formato solicitado.

var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');

var r = Number(lines.shift());
var res = (r * r * 3.14159).toFixed(4);
   
console.log(`A=${(res)}`);

Solução em Python3:

r = float(input())
print("A={:.4f}".format(r * r * 3.14159))

Solução em Haskell:

Em Haskell é necessário importar a função printf, pois com ela é fácil de delimitar as casas decimais. Usa-se readLn para ler o valor da entrada padrão e tratá-lo como um Double, como pede o exercício. Depois basta formatar a saída com printf, calculando n x R² com n = 3.14159 como sugere o exercício.

import Text.Printf (printf)
main :: IO ()
main = do 
   r <- readLn :: IO Double
   printf "A=%.4f\n" (3.14159 * r * r)

Solução em C: 

Existem vários caminhos para resolver este problema em C.  Eu criei uma variável de ponto flutuante de dupla precisão (double), realizei a leitura com scanf e fiz o cálculo da área diretamente no printf. Utilizei a função pow, da biblioteca math.h, que já faz a potência e retorna o valor também em double.
Na formatação da saída, usei %.4lf porque o .4 aqui faz a delimitação de quatro casas decimais.

Importante: pode ser que ao testar o código com math.h você precise usar "-lm" no gcc. Isso se deve à linkedição (ligação) que precisa ser realizada com a biblioteca matemática. Pode ser que isso seja necessário com outras bibliotecas também.

#include <stdio.h>
#include <math.h>

int main() {
    double r;
    
    scanf("%lf", &r);
    printf("A=%.4lf\n", 3.14159 * pow(r, 2.0));
}

Solução em C++: 

A fórmula para a questão é sempre a mesma, o que muda são as instruções de entrada e saída, basicamente. Aqui usei std::cin para a leitura do valor e std::cout para a escrita da resposta. A delimitação de casas decimais foi feita com fixed e setprecision(4). Esta função está na biblioteca iomanip, que foi incluída na linha 2 do código.

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    double r;
    
    cin >> r;
    cout << "A=" << fixed << setprecision(4) << 3.14159 * (r * r) << endl;
    
    return 0;
}

E as suas soluções, como ficaram? Estão diferentes das minhas?

domingo, 21 de março de 2021

URI (BEECROWD) - 1001 - Extremamente Básico - Iniciante - Python

O exercício "Extremamente Básico" foi resolvido em diversas linguagens. Nesse post eu mostro minha solução usando Python, mais especificamente o Python3.

Plataforma: URI (BEECROWD)
Problema1001

Linguagem: Python 3


Solução:

O exercício pede a impressão da soma de a+b no formato "X = valor", com quebra de linha ao final.

Para ler os valores de "a" e "b" é necessário chamar a função input(). No entanto, ela fará com que as variáveis "a" e "b" armazenem strings, então é necessário fazer a conversão, passando-a como parâmetro para int(). O que fizemos é chamado de coerção ou casting, forçando o dado informado a virar um inteiro. Agora nossos valores de "a" e "b" são inteiros, então basta somá-los e imprimir com a formatação correta usando a função print.

Era só isso!

a = int(input())
b = int(input())
print("X = %i" % (a + b))

sexta-feira, 19 de março de 2021

URI (BEECROWD) - 2749 - Saída 3 - Iniciante - Python, C e C++

Aqui uma postagem tripla! A solução para o problema Saia 3 em três linguagens diferentes!

Plataforma: URI (BEECROWD)

Problema2749

Enunciado:

O seu professor de programação gostaria de fazer uma tela com as seguintes características:

  1. Ter 39 traços (-) na primeira linha;
  2. Ter uma | embaixo do primeiro traço e do trigésimo nono traço da primeira linha, embaixo do 2o traço deve começar a escrever "x = 35" e o restante preencher com espaço em branco;
  3. Ter uma | embaixo do primeiro traço e do trigésimo nono traço da primeira linha, preencher no meio com espaço em branco;
  4. Ter uma | embaixo do primeiro traço e do trigésimo nono traço da primeira linha, embaixo do 17o traço deve começar a escrever "x = 35" e o restante preencher com espaço em branco;
  5. Repita o procedimento 3;
  6. Ter uma | embaixo do primeiro traço e do trigésimo nono traço da primeira linha, embaixo do 33o traço deve começar a escrever "x = 35" e o restante preencher no meio com espaço em branco;
  7. Repita o procedimento 1.

No final deve ficar igual a imagem a seguir:

--------------------------------------- (39 traços)

|x = 35                               |

|                                     |

|                x = 35               |

|                                     |

|                               x = 35|

--------------------------------------- (39 traços)


Linguagens: Python 3, C e C++


Solução:

Código em Python:

def imprime(c, n):
    for i in range(n):
        print(c, end = '')
tam = 39
imprime('-', 39)
print()
print('|x = 35', end = '')
imprime(' ', 31)
print('|')
print('|', end = '')
imprime(' ', 37)
print('|')
print('|               x = 35', end = '')
imprime(' ', 16)
print('|')
print('|', end = '')
imprime(' ', 37)
print('|')
print('|', end = '')
imprime(' ', 31)
print('x = 35|')
imprime('-', 39)
print()

Código em C:

#include <stdio.h>
int main () {
    
    printf("---------------------------------------\n");
    printf("|x = 35                               |\n");
    printf("|                                     |\n");
    printf("|               x = 35                |\n");
    printf("|                                     |\n");
    printf("|                               x = 35|\n");
    printf("---------------------------------------\n");
    
    return 0;
}

Código em C++:

#include <iostream>

using namespace std;

int main () {
    
    cout << "---------------------------------------" << endl;
    cout << "|x = 35                               |" << endl;
    cout << "|                                     |" << endl;
    cout << "|               x = 35                |" << endl;
    cout << "|                                     |" << endl;
    cout << "|                               x = 35|" << endl;
    cout << "---------------------------------------" << endl;
    
    return 0;
}

quarta-feira, 18 de novembro de 2020

URI - 1046 - Tempo de Jogo - Iniciante - C++

 Plataforma: URI

Problema1046

Enunciado:
Leia a hora inicial e a hora final de um jogo. A seguir calcule a duração do jogo, sabendo que o mesmo pode começar em um dia e terminar em outro, tendo uma duração mínima de 1 hora e máxima de 24 horas.

Linguagem: C++

Solução:

#include <iostream>

using namespace std;

int main() {
    
    int a, b, t;
    cin >> a >> b;
    
    t = b - a;
    
    if (t == 0)
        t = 24;
    
    if (t < 0)
        t += 24;
    
    cout << "O JOGO DUROU " << t << " HORA(S)" << endl;
    
    return 0;
}

terça-feira, 17 de novembro de 2020

URI - 1046 - Tempo de Jogo - Iniciante - C

Plataforma: URI

Problema1046

Enunciado:
Leia a hora inicial e a hora final de um jogo. A seguir calcule a duração do jogo, sabendo que o mesmo pode começar em um dia e terminar em outro, tendo uma duração mínima de 1 hora e máxima de 24 horas.

Linguagem: C

Solução:

#include <stdio.h>

int main (){
    int a, b, t;
    scanf("%i %i", &a, &b);
    t = b-a;

    if (!t)
        t = 24;

    if (t < 0)
        t += 24;

    printf("O JOGO DUROU %i HORA(S)\n", t);
    return 0;
}

segunda-feira, 16 de novembro de 2020

URI - 1000 - Hello World! - Iniciante - Python

Plataforma: URI

Problema1000

Enunciado:
O problema deve imprimir "Hello World!", com quebra de linha no fim.

Linguagem: Python

Solução:

print("Hello World!")

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas