// hartals package main import ( "bufio" "fmt" "os" "strconv" ) func read_integer(scanner *bufio.Scanner) int { scanner.Scan() string_number := scanner.Text() number, err := strconv.Atoi(string_number) if err != nil { fmt.Println("Error in read_integer:", err) } return number } func write_integer(file *os.File, number int) { _, err := file.WriteString(fmt.Sprintf("%d\n", number)) if err != nil { fmt.Printf("error writing string: %v", err) } } func solve(days int, frequencies []int, output_file *os.File) { strikes := make([]bool, days) //defaults to false for i := 0; i < len(frequencies); i++ { for index := frequencies[i] - 1; index < days; index += frequencies[i] { strikes[index] = true } } result := 0 for i := 0; i < days; i++ { if strikes[i] && (i%7 != 5) && (i%7 != 6) { result++ } } write_integer(output_file, result) } func main() { input_file, err := os.Open("hartal.in") if err != nil { fmt.Println(err) } defer input_file.Close() scanner := bufio.NewScanner(input_file) output_file, err := os.Create("hartal.out") // creating... if err != nil { fmt.Printf("error creating file: %v", err) return } defer output_file.Close() test_cases := read_integer(scanner) // fmt.Println("Test cases = ", test_cases) for test_case := 1; test_case <= test_cases; test_case++ { // fmt.Println("Test case", test_case, ":") days := read_integer(scanner) // fmt.Println("Days to simulate:", days) hartals := read_integer(scanner) // fmt.Println("Number of hartals:", hartals) frequencies := make([]int, hartals) for hartal := 0; hartal < hartals; hartal++ { frequency := read_integer(scanner) frequencies[hartal] = frequency } // fmt.Println("Frequencies:", frequencies) solve(days, frequencies, output_file) } }