Алгоритм Евклида
#include <iostream>
long int NOD(long int var1, long int var2)
{
while(var1 != var2)
{
if(var1 > var2)
std::swap(var1, var2);
var2 = var2 - var1;
}
return var1;
}
int main()
{
long int
A, B;
std::cin >> A >> B;
std::cout << "НОД(" << A << " и " << B << ") = " << NOD(A, B) << std::endl;
}
1. 10 ГБ = 10*2^10 МБ = 10*2^20 КБ = 10*2^30 Б = 10*2^33 байт
2. 5 ГБ = 5*2^10 МБ = 5*2^20 КБ
1 байт = 8бит
1 КБ = 1024(2^10) байт
с повышением приставки нужно умножать на 1024.
С помощью программного обеспечения можно приспособить компьютер для решения задач конкретных пользователей. · Пользователи решают свои задачи с помощью прикладных программ. · Операционная система – важнейшее программное обеспечение, без которого использовать современный компьютер практически невозможно. · Программисты пишут программы с помощью систем программирования. · Кроссплатформенные программы могут работать в различных операционных системах. · Пользователь работает с компьютером в режиме диалога. Он может использовать интерфейс командной строки или графический интерфейс. · Для быстрого доступа к программам и документам можно использовать ярлыки (ссылки). · Инсталляция – это установка и настройка программы на компьютере пользователя.
Скорее всего, условие задачи сформулировано некорректно, ибо составить программу, содержащую не более пяти команд не получится, и сейчас объясню почему.
Так как нужно из числа 4 получить число 80, то первая команда не может являться "2", в противном случае мы уйдем в отрицательные числа. Тогда первая команда - "1", и теперь нам нужно из числа 20 получить число 80. Рассмотрим несколько случаев, когда последней командой мы получаем число 80.
1 случай.
Если последняя команда - "1", то это возможно, когда предпоследний результат будет равен 16, однако так как наша траектория точно содержит число 20, которое кратно 5, то, применяя далее наши команды, мы всегда будем получать число, кратное 5, а нам нужно получить 16. Противоречие.
2 случай.
Теперь рассмотрим ситуацию, когда последняя команда - "2". То есть предпоследний результат равен 85. Если получать число 85 командой "1", то траектория должна содержать число 17. Из соображений кратности (см. 1 случай) это невозможно. Значит вторая с конца команда должна являться "2". Аналогично рассуждая, приходим к выводу о том, что и третья, и четвертая команды с конца тоже должны быть "2". То есть наша траектория имеет вид 1*2222, причем на месте "*" должна быть такая траектория команд, которая позволит получить из числа 20 число 100. Ясно, что наименьшая траектория будет 112222, но она содержит 6 команд. Противоречие.
Получается, что из числа 4 получить число 80 программой, которая бы содержала не более 5 команд, действительно не получится. Но если говорить о наименьшей траектории, то 112222 - будет являться ответом на эту задачу.
В C++:
#include <iostream>
#include <ctime>
#include <iomanip>
int main()
{
using namespace std;
//размерность матрицы
const int N = 5;
int matrix[N][N];
srand(time(0));
int i, j;
//как-нибудь заполняем матрицу
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
matrix[i][j] = rand() % (N * N + 1) - (N * N / 2);
//вывод исходной матрицы на экран
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
cout << setw(4) << matrix[i][j];
cout << endl;
}
//проверка, есть ли вообще числа, чтобы умножать
int p = 0;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
if (i > j && i > N - j - 1 && matrix[i][j] < 0)
{
p = 1;
break;
}
//подсчёт требуемого произведения
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
if (i > j && i > N - j - 1 && matrix[i][j] < 0)
p = p * matrix[i][j];
//нахождение модуля произведения
if (p < 0)
p = -p;
//вывод этого значения на экран
cout << "Multiplication: " << p << endl;
return 0;
}