fork(9) download
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. int k, i, j, temp, instancia = 0, solucao = 1;
  5. int matriz[9][9], somaLinha[9], somaColuna[9], somaMatriz[3][3];
  6.  
  7. scanf("%i", &k);
  8.  
  9. for(int cont = 0; cont < k; cont++) {
  10. //leitura de valores para a matriz
  11. for(i = 0; i < 9; i++) {
  12. for(j = 0; j < 9; j++) {
  13. scanf("%i", &matriz[i][j]);
  14. }
  15. }
  16.  
  17. //inicializa variáveis somadoras com zero
  18. for (i = 0; i < 9; i++) {
  19. somaLinha[i] = 0;
  20. somaColuna[i] = 0;
  21. somaMatriz[i/3][i%3] = 0;
  22. //descomente o prinf abaixo para facilitar o entendimento sobre
  23. //como a matriz está sendo preenchida sem utilizar dois for
  24. //printf("%i %i \n", i/3, i%3);
  25. }
  26.  
  27. //contabiliza valores para resolver o problema
  28. for (i = 0; i < 9; i++) {
  29. for (j = 0; j < 9; j++) {
  30. temp = matriz[i][j] * matriz[i][j];
  31. somaLinha[i] += temp;
  32. somaColuna[j] += temp;
  33. somaMatriz[i/3][j/3] += temp;
  34. //printf("%i %i %i %i %i\n", i, j, i/3, j/3, matriz[i][j]);
  35.  
  36. if (i == 8 && somaColuna[j] != 285) { break; }
  37. }
  38.  
  39. if (somaLinha[i] != 285) { break; }
  40. }
  41.  
  42. //mostra os resultados
  43. instancia++;
  44. printf("Instancia %i\n", instancia);
  45.  
  46. //determina se é a solução
  47. for (int i = 0; i < 3; i++) {
  48. for (int j = 0; j < 3; j++) {
  49. if (somaMatriz[i][j] != 285) {
  50. solucao = 0;
  51. }
  52. }
  53. }
  54.  
  55. if (solucao == 1) {
  56. printf("SIM\n\n");
  57. } else {
  58. printf("NAO\n\n");
  59. }
  60.  
  61. solucao = 1;
  62. }
  63.  
  64. return 0;
  65. }
Success #stdin #stdout 0s 9432KB
stdin
2
1 3 2 5 7 9 4 6 8
4 9 8 2 6 1 3 7 5
7 5 6 3 8 4 2 1 9
6 4 3 1 5 8 7 9 2
5 2 1 7 9 3 8 4 6
9 8 7 4 2 6 5 3 1
2 1 4 9 3 5 6 8 7
3 6 5 8 1 7 9 2 4
8 7 9 6 4 2 1 5 3
1 3 2 5 7 9 4 6 8
4 9 8 2 6 1 3 7 5
7 5 6 3 8 4 2 1 9
6 4 3 1 5 8 7 9 2
5 2 1 7 9 3 8 4 6
9 8 7 4 2 6 5 3 1
2 1 4 9 3 5 6 8 7
3 6 5 8 1 7 9 2 4
8 7 9 6 4 2 1 3 5
stdout
Instancia 1
SIM

Instancia 2
NAO