Sub HOK()
Dim c As Long, NOK As Long
a = CInt(InputBox("Введите первое число"))
b = CInt(InputBox("Введите второе число"))
If a = b Then
NOK = a
Else
c = a * b
Do
If a > b Then a = a - b Else b = b - a
Loop Until a = b
NOK = c / a
End If
MsgBox "НОК=" + Str(NOK)
End Sub
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int a, b;
cin >> a;
cin >> b;
cout << "НОД(" << a << ";" << b << ")=";
while (a != 0 and b != 0) {
if (a > b) {
a = a % b;
}
else {
b = b % a;
}
}
cout << a + b << endl;
}
Если система счисления отличается от десятичной, то проще всего делать арифметические операции в системе по основанию, близкому к 10.
У нас 41₈+57₁₆, оба основания кратны степени двойки, поэтому перейти от одной системы счисления к другой можно через двоичную систему. из оснований 8 и 16 наиболее близко к 10 основание 8. В этой системе и будем работать.
57₁₆ = 0101 0111₂ = 1010111₂ = 1 010 111₂ = 127₈
А теперь складываем "в столбик" 41₈ и 127₈
Правила сложения - как в обычной десятичной системе, только если в десятичной следующий разряд появляется после 9, то в восьмеричной - после 7, т.е. на 2 раньше. Поэтому при сложении воьмеричных чисел, как десятичных, мы должны к результату эти 2 единицы добавить.
Итак, поразрядно.1+7=8, но 8>7 поэтому добавляем 2 и получаем 10, из которых 0 пишем и +1 в старший разряд. 4+2+1=7, а 1 просто "сносим" в результат.
41₈
+127₈
--------
170₈ = 1 111 000₂ = 1111000₂
Это и есть ответ.
<span>
<span>
80гб = 83886080 кб
83886080 кб / 1440 = 58254.222 нужно дискет
58255 * 20 = 1165100 грамм = 1165.1 кг
</span>
</span>
<span>2³³ бит=8589934592 бит
8589934592 бит =1 073 741 824 байт
1 073 741 824 байт = 1 048 576 МБ
<span>1 048 576 МБ > 650 МБ-собственно, ответ-не хватит
</span></span>