Pesquisar este blog

Livros Recomendados

sexta-feira, 5 de fevereiro de 2021

URI (BEECROWD) - 1323 - Feynman - Matemática - C e C++

Novidade no blog! Agora um problema da categoria Matemática:  Feynman. Veja como ficou a minha solução!

Plataforma: URI (BEECROWD)

Problema1323

Enunciado:
Richard Phillips Feynman era um físico americano muito famoso e ganhador do Prêmio Nobel de Física. Ele trabalhava em física teórica e também foi pioneiro no campo da computação quântica. Ele visitou a América do Sul por dez meses, dando palestras e aproveitando a vida nos trópicos. Ele também é conhecido pelos livros "Surely You’re Joking, Mr. Feynman!" e "What Do You Care What Other People Think?", que inclui algumas de suas aventuras abaixo do equador.

Sua paixão da vida inteira era resolver e criar quebra-cabeças, trancas e códigos. Recentemente, um fazendeiro idoso da América do Sul, que hospedou o jovem físico em 1949, achou alguns papéis e notas que acredita-se terem pertencido a Feynman. Entre anotações sobre mesóns e eletromagnetismo, havia um guardanapo onde ele escreveu um simples desafio: "quantos quadrados diferentes existem em um quadriculado de N x N quadrados?".

No mesmo guardanapo havia um desenho, que está reproduzido abaixo, mostrando que para N = 2, a resposta é 5.

Linguagens: C e C++


Solução:

Iterativamente, bastava acumular a soma de todos os quadrados de 1 até n. Poderia ser feito com a função de potência ou valor * valor (no meu caso, utilizei a variável i, então i * i). Para não precisar implementar potência ou incluir a biblioteca matemática, preferi valor * valor.

Código em C:

#include <stdio.h>
int main() {
    
    int n, r, i;
    while (scanf("%d", &n) != EOF) {
        
        if (!n)
            exit(0);
            
        r = 1;
        for (i = 2; i <= n; i++)
            r += i*i;
        
        printf("%d\n", r);
    }

    return 0;
}

Código em C++:

#include <iostream>

using namespace std;

int main() {
    
    int n, r, i;
    while (cin >> n) {
        
        if (!n)
            exit(0);
            
        r = 1;
        for (i = 2; i <= n; i++)
            r += i*i;

        cout << r << endl;
    }

    return 0;
}

Nenhum comentário:

Postar um comentário

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