/** * Hartals Problem. * * @author John Paxton * @version May 12, 2014 */ import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; public class Driver { public static void main (String [] args) throws FileNotFoundException { Scanner in = new Scanner (new File ("hartal.in")); PrintWriter out = new PrintWriter (new File ("hartal.out")); int testCases; int days; int parties; int strikeFrequency; Hartal hartals = new Hartal(); testCases = in.nextInt(); // System.out.println("Test cases = " + testCases); for (int testCase = 0; testCase < testCases; testCase++) { days = in.nextInt(); // System.out.println("Days = " + days); hartals.setHowMany(days); parties = in.nextInt(); // System.out.println("Parties = " + parties); for (int party = 0; party < parties; party++) { strikeFrequency = in.nextInt(); // System.out.println("Strike frequency = " + strikeFrequency); hartals.addStrikes(strikeFrequency); } out.println(hartals.countStrikes()); } out.close(); } } class Hartal { Hartal() { strikes = new Boolean[3650]; } private void initialize() { for (int i = 0; i < howMany; i++) { strikes[i] = false; } } public void setHowMany(int howMany) { this.howMany = howMany; initialize(); } public void addStrikes (int frequency) { int current = frequency - 1; while (current < howMany) { strikes[current] = true; current += frequency; } } public int countStrikes() { int result = 0; for (int i = 0; i < howMany; i++) { if (strikes[i] && (i % 7 != 5) && (i % 7 != 6)) { result++; } } return result; } private Boolean[] strikes; private int howMany; }