C++ Вопрос Минимум из двух

Пользователь
Статус
Оффлайн
Регистрация
11 Дек 2018
Сообщения
287
Реакции[?]
81
Поинты[?]
3K
Даны два целых положительных числа. Требуется найти меньшее из них. Можно использовать только арифметические операции.
Ввод: 9 4 | Вывод: 4
Ввод: 4 9 | Вывод: 4
Ввод: 4 4 | Вывод: 4
Помогите()()
 
Начинающий
Статус
Оффлайн
Регистрация
2 Май 2022
Сообщения
30
Реакции[?]
8
Поинты[?]
1K
:FailFish::NotLikeThis: Надеюсь это рофл
C++:
#include <iostream>

int main()
{
    int a, b;
    std::cin >> a >> b;
    if (a - b > 0)
        std::cout << b;
    else
        std::cout << a;
    return 0;
}
ну или
C++:
#include <iostream>

int main()
{
    int a, b;
    std::cin >> a >> b;
    std::cout << ((a - b > 0)? b : a);
    return 0;
}
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
11 Дек 2018
Сообщения
287
Реакции[?]
81
Поинты[?]
3K
:FailFish::NotLikeThis: Надеюсь это рофл
C++:
#include <iostream>

int main()
{
    int a, b;
    std::cin >> a >> b;
    if (a - b > 0)
        std::cout << b;
    else
        std::cout << a;
    return 0;
}
ну или
C++:
#include <iostream>

int main()
{
    int a, b;
    std::cin >> a >> b;
    std::cout << ((a - b > 0)? b : a);
    return 0;
}
Да там же написано!!! Только арифметика
 
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
поухй, используем min(a;b)
 
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
2 Май 2022
Сообщения
30
Реакции[?]
8
Поинты[?]
1K
Начинающий
Статус
Оффлайн
Регистрация
2 Май 2022
Сообщения
30
Реакции[?]
8
Поинты[?]
1K
Модуль, кстати, тоже нельзя...
Блять, нельзя сравнить два числа не сравнивая их
C++:
#include <iostream>

int main()
{
    int a, b;
    std::cin >> a >> b;
    int c = a - b;
    std::cout << (((c >> 31) & 1 ^ 1)? b : a);
    return 0;
}
 
Пользователь
Статус
Оффлайн
Регистрация
11 Дек 2018
Сообщения
287
Реакции[?]
81
Поинты[?]
3K
Блять, нельзя сравнить два числа не сравнивая их
C++:
#include <iostream>

int main()
{
    int a, b;
    std::cin >> a >> b;
    int c = a - b;
    std::cout << (((c >> 31) & 1 ^ 1)? b : a);
    return 0;
}
Преподу абсолютно мега гипер до пизды
Блять, нельзя сравнить два числа не сравнивая их
Видимо можно путем чистой арифметики
 
Пользователь
Статус
Оффлайн
Регистрация
17 Июл 2021
Сообщения
462
Реакции[?]
118
Поинты[?]
10K
Преподу абсолютно мега гипер до пизды

Видимо можно путем чистой арифметики
C++:
#include <iostream>
#include <limits.h>

int flip(int bit) {
  return 1^bit;
}

int sign(int a) {
  return flip((a >> (sizeof(int) * CHAR_BIT - 1))) & 0x1;
}

int getMaxNaive(int a, int b) {
  int k = sign(a - b);
  int q = flip(k);
  return a * k + b * q;
}

int main()
{
    int a, b;
    std::cin >> a >> b;
   
    std::cout << getMaxNaive(a, b);

    return 0;
}
две минуты гуглежа
p.s: source:
Пожалуйста, авторизуйтесь для просмотра ссылки.

p.s2: здесь находится большее, но если поднапрячь мозги, можно найти и меньшее :LUL:
 
Пользователь
Статус
Оффлайн
Регистрация
11 Дек 2018
Сообщения
287
Реакции[?]
81
Поинты[?]
3K
C++:
#include <iostream>
#include <limits.h>

int flip(int bit) {
  return 1^bit;
}

int sign(int a) {
  return flip((a >> (sizeof(int) * CHAR_BIT - 1))) & 0x1;
}

int getMaxNaive(int a, int b) {
  int k = sign(a - b);
  int q = flip(k);
  return a * k + b * q;
}

int main()
{
    int a, b;
    std::cin >> a >> b;
 
    std::cout << getMaxNaive(a, b);

    return 0;
}
две минуты гуглежа
p.s: source:
Пожалуйста, авторизуйтесь для просмотра ссылки.

p.s2: здесь находится большее, но если поднапрячь мозги, можно найти и меньшее :LUL:
Доп библиотеки запрещены. Да что все пишут что это изи, я же говорю, нужно чисто арифметикой, иначе отказ
P.S. Цитирую: "Решаете крайне легкие задачи сложными путями. Буду снижать баллы."
 
Последнее редактирование:
money++
Разработчик
Статус
Оффлайн
Регистрация
14 Июн 2018
Сообщения
638
Реакции[?]
339
Поинты[?]
22K
|a - b| = sqrt((a-b)*(a-b))
a + b - |a - b| = 2*min(a,b)
Отсюда
min(a,b) = (a + b - sqrt((a-b)*(a-b))) / 2
 
купить дизайн: yougame.biz/threads/155999
Дизайнер
Статус
Оффлайн
Регистрация
19 Сен 2018
Сообщения
793
Реакции[?]
1,380
Поинты[?]
9K
Пользователь
Статус
Оффлайн
Регистрация
11 Дек 2018
Сообщения
287
Реакции[?]
81
Поинты[?]
3K
|a - b| = sqrt((a-b)*(a-b))
a + b - |a - b| = 2*min(a,b)
Отсюда
min(a,b) = (a + b - sqrt((a-b)*(a-b))) / 2
корень нельзя
чисто арифметикой эти никак не сделать
я сегодня к нему пришел на пару опять, он мне опять сказал - "можно", я говорю: "мне хоть модуль можно?", он говорит - нет. Пишет на доске: + - / * %, - эти операции допустимы. Я так же как ты думаю, но этому зав кафедры всё подвластно, поэтому я ему верю, лол)
 
Начинающий
Статус
Оффлайн
Регистрация
29 Июн 2020
Сообщения
18
Реакции[?]
15
Поинты[?]
0
Решение не очень трудное, просто не сразу в голову приходит
C++:
double a = 4.0;
double b = 9.0;
std::cout << (a + b) / 2 - -(a - b) / 2;
 
Последнее редактирование:
Сверху Снизу