Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Дан набор из N целых положительных чисел. Необходимо выбрать из набора произвольное количество чисел так, чтобы их сумма была
- //как можно больше и при этом не делилась на 8.
- //В ответе нужно указать количество выбранных чисел и их сумму, сами числа выводить не надо.
- //Если получить нужную сумму невозможно, считается, что выбрано 0 чисел и их сумма равна 0.
- //https://inf-ege.sdamgia.ru/problem?id=13584
- #include <iostream>
- using namespace std;
- int main(){
- const int d=8;
- int temp, N;
- count=0,// количество выбранных чисел
- sum, // сумма
- min=10001; // минимальное число не кратное d=8;
- cin >> N;
- for(int i=0; i<N; ++i){ // суммируем все элементы с поиском минималки
- cin >> temp;
- sum += temp;
- if(temp%d != 0 and temp < min) min = temp; // минимальное число не кратное d;
- }
- if(sum % d == 0) count = N; // все элементы не кратные 8
- else{ // сумма кратна 8
- if(min != 10001){// есть элементы не кратные 8
- sum -= min; // вычитаем один элемент не кратный 8
- //(из суммы кратной 8 вычесть число не кратное 8 => сумма не кратна 8)
- count = N-1 // кол-во элементов уменьшается на один
- }
- else { // все элементы были кратны 8
- sum = 0; // закрываем шарманку
- count = 0; // закрываем шарманку
- }
- }
- cout << count << " " << sum;
- }
Add Comment
Please, Sign In to add comment