Загрузка данных


#include <stdio.h>

int read_array(int *arr, int size) {
    for (int i = 0; i < size; i++) {
        if (scanf("%d", &arr[i]) != 1) return 0;
    }
    return 1;
}

// Сумма четных (0 считаем нечетным, т.е. игнорируем)
int get_even_sum(int *arr, int size) {
    int sum = 0;
    for (int i = 0; i < size; i++) {
        if (arr[i] != 0 && arr[i] % 2 == 0) {
            sum += arr[i];
        }
    }
    return sum;
}

// Формирование нового массива делителей суммы
int build_divisors_array(int *src, int src_size, int *dst, int sum) {
    int count = 0;
    for (int i = 0; i < src_size; i++) {
        // Избегаем деления на ноль
        if (src[i] != 0 && sum % src[i] == 0) {
            dst[count++] = src[i];
        }
    }
    return count;
}

void print_array(int *arr, int size) {
    for (int i = 0; i < size; i++) {
        printf("%d", arr[i]);
        if (i < size - 1) printf(" ");
    }
    printf("\n");
}

int main(void) {
    int n;
    if (scanf("%d", &n) != 1 || n <= 0 || n > 10) {
        printf("n/a\n");
        return 1;
    }

    int arr[10];
    if (!read_array(arr, n)) {
        printf("n/a\n");
        return 1;
    }

    int sum = get_even_sum(arr, n);
    
    // Если четных элементов не было, сумма 0. 
    // По условию: "В случае ошибки или отсутствии четных элементов выводить n/a"
    if (sum == 0) {
        printf("n/a\n");
        return 1;
    }

    int divisors[10];
    int div_count = build_divisors_array(arr, n, divisors, sum);

    printf("%d\n", sum);
    print_array(divisors, div_count);

    return 0;
}