/*
  Ottenere dall'utente tre numeri: h, k, e N.
  Su una scacchiera N x N le caselle sono:
  di tipo * se la somma dell'indice di riga e dell'indice di colonna è un multiplo di h ma non di k;
  di tipo 0 se la somma dell'indice di riga e dell'indice di colonna è un multiplo di k ma non di h;
  di tipo $ se la somma dell'indice di riga e dell'indice di colonna è un multiplo sia di h che di k;
  di tipo + se la somma dell'indice di riga e dell'indice di colonna non è multiplo nè di h nè di k.

  Rappresentare la scacchiera contrassegnando ogni casella con il suo tipo.
  Dare le statistiche (in percentuale) di quante caselle per ogni tipo ci sono.
*/

import javax.swing.JOptionPane;
class ExArray_07 {
  public static void main(String[] args) {
    int N = Integer.parseInt(JOptionPane.showInputDialog("Matrice quadrata di lato?"));
    int h = Integer.parseInt(JOptionPane.showInputDialog("Primo numero (h):"));
    int k = Integer.parseInt(JOptionPane.showInputDialog("Secondo numero (k):"));
    
    char[][] Array = new char[N][N];
    int  sum;                   //somma degli indici
    char field = ' ';           //campo da inserire negli elementi dell'Array
    int s1=0, s2=0, s3=0, s4=0; //contatori di simboli
    
    for (int j=0; j<Array.length; j++)
      for (int c=0; c<Array[0].length; c++) {
        sum = j + c;
        if ((sum % h) == 0 && (sum % k) != 0) {field = '*'; s1++;}
        else if ((sum % k) == 0 && (sum % h) != 0) {field = '0'; s2++;}
             else if ((sum % h) == 0 && (sum % k) == 0) {field = '$'; s3++;}
                  else if ((sum % h) != 0 && (sum % k) != 0) {field = '+'; s4++;}
        //riempie l'elemento
        Array[j][c] = field;
      }
      
      //stampa della matrice
      System.out.println("\nStampa matrice");
      for (int j=0; j<Array.length; j++) {
        for (int c=0; c<Array[0].length; c++)
            System.out.print("\t" + Array[j][c]);      
        System.out.println();
      }
      //stampa statistiche
      System.out.println("\nStatistiche dei segni inseriti:\n\n" +
                         "\t'*' = " + (float) s1/(N*N) * 100 + "%\n" +
                         "\t'0' = " + (float) s2/(N*N) * 100 + "%\n" +
                         "\t'$' = " + (float) s3/(N*N) * 100 + "%\n" +
                         "\t'+' = " + (float) s4/(N*N) * 100 + "%");
    
    
    System.exit(0);
  }
}