Plataforma: URI
Problema: 1578Enunciado:
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
| 1 | 3 |
| 5 | 7 |
para ele não é
| 16 | 24 |
| 40 | 64 |
mas
| 1 | 9 |
| 25 | 49 |
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 N matrizes da lista. Então, decidiu escrever um programa que fizesse o serviço para ele.
Linguagem: C
#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; }