C++ в массив a длиной n из всех одинаковых элементов оставьте только по одному представителю. остальные удалите. рассмотрите 2 варианта: а) массив б) не
Следующее число, большее 125₁₀, равно 126₁₀ или 1111110₂ Посмотрим, может ли оно получиться по заданному алгоритму. На шаге 2а определяется "бит четности" путем подсчета количества единиц в двоичной записи числа. Если оно четно, к записи числа справа дописывается 0, если нечетно - единица. На шаге 2б повторяются действия предыдущего шага. Отбросим две правые цифры в записи 1111110₂ и посмотрим, как на получившемся числе работает предложенный алгоритм. 1111110 ⇒ 11111, число единиц нечетное, дописываем 1, получаем 111111, теперь число единиц четное, дописываем 0 и получаем 1111110, т.е. как раз то число, которое у нас было при переводе 126 в двоичную систему счисления. А исходное число - это 11111₂ = 31₁₀ ответ: 31
#include <iostream>
#include <list>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;
int main() {
int j,n;
list<int> lst;
list<int>::iterator it1;
// начальная установка генератора случ. чисел
srand(time(NULL));
//заполнение списка
cout<<"n = "; cin>>n;
for (j=0; j<n; j++)
lst.push_back(rand() % 10);
//вывод на экран
cout<<"initial array: ";
for (it1=lst.begin(); it1!=lst.end(); it1++)
cout<<*it1<<" ";
//сортировка, удаление повторных
lst.sort();
lst.unique();
//вывод списка
cout<<endl<<"after removing: ";
for (it1=lst.begin(); it1!=lst.end(); it1++)
cout<<*it1<<" ";
cout<<endl;
system("pause");
return 0;
}
В варианте без сортировки (что, вообще говоря, не принципиально) убираете строку lst.sort();