Pesquisar este blog

Livros Recomendados

quarta-feira, 7 de outubro de 2020

URI - 1578 - Matriz de Quadrados - Ad-Hoc - C

Plataforma: URI

Problema1578

Enunciado:

Atrapalhilton é um estudante muito dedicado, embora muito, muito atrapalhado. Na semana passada, seu professor de Matemática, o Sr. Sabetudilton, recomendou à classe uma lista de exercícios sobre matrizes. Atrapalhilton, aplicado como é, dediciu fazer os exercícios no mesmo dia, tão logo chegou em casa, embora apenas após assistir o episódio vespertino de A Galinha Listradinha, seu programa de TV favorito. O enunciado de um dos exercícios dizia:

  • Calcule o quadrado de cada uma das matrizes abaixo…

No entanto, Atrapalhilton fez uma baita duma confusão. Para ele, o quadrado de uma matriz quadrada Aé a matriz dos quadrados dos valores da matriz A. Por exemplo, o quadrado da matriz

13
57

para ele não é

1624
4064

mas

19
2549

Atrapalhilton conseguiu calcular o “quadrado” da primeira matriz, da segunda, da terceira e percebeu que já estava muito tarde, que não ia conseguir terminar de calcular os “quadrados” de todas as matrizes da lista. Então, decidiu escrever um programa que fizesse o serviço para ele.


Linguagem: C

Solução: 

#include <stdio.h>

unsigned long long contaDigitos(unsigned long long valor) {
    int resposta = 1;
    
    while(valor > 9) {
        resposta++;
        valor /= 10;
    }

   return resposta;
}

int main() {
    int n, m, x = 4, i, j, k;
    unsigned long long valor, maior, tamanho;
    scanf("%i", &n);

    while(n--) {
        scanf("%i", &m);
        unsigned long long matriz[m][m], maiores[m];
        maior = 0;

        for (i = 0; i < m; i++) {
            for (j = 0; j < m; j++) {
                scanf("%llu", &valor);
                matriz[i][j] = valor * valor;
            }
        }

        for (j = 0; j < m; j++) {
            for (i = 0; i < m; i++) {
                tamanho = contaDigitos(matriz[i][j]);
                
                if (maior < tamanho)
                    maior = tamanho;
            }
            
            maiores[j] = maior;
            maior = 0;
        }

        if (x != 4)
            printf("\n");

        printf("Quadrado da matriz #%i:\n", x++);

        for (i = 0; i < m; i++) {
            for (j = 0; j < m; j++) {
                for (k=0; k<maiores[j]-contaDigitos(matriz[i][j]); k++)
                    printf(" ");

                printf("%llu", matriz[i][j]);

                if (j < m - 1)
                    printf(" ");
            }
            printf("\n");
        }
    }

    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