вариант 5
1) сложите числа, а затем проверьте результаты, выполнив соответствующие десятичные
сложения:
а) 101101 (2) и 1100110 (2);
б) 67 (8) и 45(8)
b) а(16) и 3 (16)
2) перемножьте числа, а затем проверьте результаты, выполнив соответствующие
десятичные умножения:
а) 10110 (2) и 1001 (2)
б) 34(8) и 2(8)
3) вычислите значение выражения: 23(8) + 101101(2) (61(8) + 13(10)) + 3f(16). ответ представьте в
восьмеричной системе счисления.
using namespace std;
int main() {
int n=12, imax=0, imin=0;
int a[n];
srand(time(NULL));
cout<<"array:"<<endl;
for (int i=0; i<n; i++)
{
a[i]=rand() % 50;
cout<<a[i]<<" ";
}
cout<<endl;
for (int i=1; i<n; i++) {
if (a[i] > a[imax]) imax = i;
if (a[i] < a[imin]) imin = i;
}
for (int i=0; i<n; i++) {
if (i == imax || i == imin) cout << " ! " << a[i] << " ! ";
else cout << a[i] << " ";
}
cout<<endl;
return 0;
}
Пример:
array:
31 0 13 29 13 34 33 42 40 26 48 24
31 ! 0 ! 13 29 13 34 33 42 40 26 ! 48 ! 24
56
Объяснение:
X mod 3 - последняя цифра в троичной записи числа X. X div 3 - число, полученное отбрасыванием последней цифры в троичной системе счисления.
Используя написанное выше, легко понять, что делает программа.
Сначала M = L = 0, затем в цикле, пока X > 0, к M прибавляется 1, к L прибавляется 1, если последняя цифра в троичной записи числа равна 2. Потом последняя троичная цифра отбрасывается. В конце выводится M и L.
Программа выводит количество троичных цифр в записи числа X и количество двоек в троичной записи числа X.
Итак, нужно найти количество чисел, троичная запись которых состоит из 5 цифр, из которых ровно две двойки.
Если первая цифра не двойка, то она 1 (0 быть не может): 1. Для двоек можно выбрать место на каждое из мест, обозначенных вопросом, можно поставить любую из 2 цифр (0 или 1). Получается 6 * 2 * 2 = 24 числа.
Если первая цифра двойка, то место для второй двойки можно выбрать каждый вопрос можно заполнить одной из двух цифр, итого 4 * 2 * 2 * 2 = 32 числа.
Всего 24 + 32 = 56 вариантов.