Основная идея состоит в том, что каждая сумма – это сумма цифр, то есть она не может быть больше 18. Значит, надо разбивать каждое возможно получившееся число на однозначные и двузначные числа и смотреть, может ли такое быть.
1212 – возможно, например, из числа 666 (6+6 = 12, 6+6 = 12, итог: 1212)
129 – возможно, например, из числа 936 (9+3 = 12, 3+6 = 9, итог: 129)
123 – возможно, например, из числа 930
1218 – невозможно. Это число можно разбить только на два двузначных числа, но тогда 12 и 18 записаны в порядке возрастания, а по условию должно быть наоборот
1812 – возможно, например, из числа 993
312 – невозможно. Это число можно разбить либо на 3 и 12, либо на 31 и 2. В первом случае числа расположены в порядке возрастания, а во втором нельзя получить 31, так как сумма цифр не больше 18
912 – невозможно (аналогично с 312)
112 – возможно, например, из 920
Итого 5 чисел могут получиться.
ответ: 5
Поделитесь своими знаниями, ответьте на вопрос:
написать программу на C++Оформить функцию поиска количества нулевых элементов массива. В главной программе дано 3 одномерных массива arr1, arr2, arr3 длиной 10 элементов каждый. Применить функцию для каждого из 3-х заданных массивов. (в функции не должно быть операторов ввода или вывода)
#include <iostream>
using namespace std;
#define n 10
void fillingMass(int arr[n])
{
for(int i=0; i<n; i++)
{
arr[i] = -5 + rand() % 10;
cout<<arr[i]<<" "; // вывод содержимого массивов, если не надо уберешь
}
cout<<endl; // вывод содержимого массивов, если не надо уберешь
}
int countingZero(int arr[n])
{
int count = 0;
for(int i=0; i<n; i++)
{
if(arr[i] == 0)
count++;
}
return count;
}
int main()
{
int arr1[n],arr2[n],arr3[n];
fillingMass(arr1);
fillingMass(arr2);
fillingMass(arr3);
cout<<"In the first array, the number of zero elements = "<<countingZero(arr1)<<endl;
cout<<"In the second array, the number of zero elements = "<<countingZero(arr2)<<endl;
cout<<"In the third array, the number of zero elements = "<<countingZero(arr3)<<endl;
return 0;
}
Объяснение: