ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Задачка по математике (https://forum.antichat.xyz/showthread.php?t=1406634)

AnWu 01.11.2021 15:26

Есть задача:

https://forum.antichat.xyz/attachments/27875774/

Нельзя использовать: if, else, &&, ||, битовые операции

Инструменты: iostream, cmath, математика, геометрия

Цель: вывести наибольшее из чисел

У меня на решение без гугла ушел 1 час.

Тем кому просто интересно.

Спрячьте ответ под хайд

frit 01.11.2021 15:49

Скрытое содержимое для пользователя(ей):

AnWu 01.11.2021 15:51

Цитата:

Сообщение от frit

*** Скрытый текст не может быть процитирован. ***

только cmath, и никаких указателей

copypaste_scripter 01.11.2021 16:19

интересно. скажите ответ? и ещё, для чего такое нужно? может где то применится?

LLIKOJIbHUK 01.11.2021 16:34

Цитата:

Сообщение от Everest ^_^

Никогда не понимал для чего эти задачи, они же нигде не пригодятся, только в олимпиадах...

таким образом ты тренируешь свой мозг

AnWu 01.11.2021 16:37

Цитата:

Сообщение от Everest ^_^

Никогда не понимал для чего эти задачи, они же нигде не пригодятся, только в олимпиадах...

саморазвитие, понимать что и как может работать в подкорке

AnWu 01.11.2021 16:38

@Smeruxa сам сделал или нашел? у меня немного другой ответ

kin4stat 01.11.2021 17:07

Цитата:

Сообщение от DonHomka

саморазвитие, понимать что и как может работать в подкорке

Цитата:

Сообщение от Everest ^_^

Никогда не понимал для чего эти задачи, они же нигде не пригодятся, только в олимпиадах...

самодеградация

kin4stat 01.11.2021 17:17

Никаких if, циклов и битовых операций. Чистая математика процессора

C++:





[CODE]
#include
#include
int
main
(
)
{
int
a
,
b
;
std
::
cin
>>
a
>>
b
;
__asm
{
mov eax
,
a
cmp eax
,
b
cmovl eax
,
b
mov a
,
eax
}
std
::
cout


F0RQU1N and 01.11.2021 17:33

Цитата:

Сообщение от DonHomka

Нельзя использовать: if, else, &&, ||, битовые операции

case

meowprd 01.11.2021 17:35

Цитата:

Сообщение от F0RQU1N

case

и сколько ты так будешь перебирать через switch?)

допустим первое значение 3, а второе 10003

удачи расписать 10003 кейса)

Cake_ 01.11.2021 18:16

???:





[CODE]
#include
void
main
(
)
{
int
in
[
2
]
=
{
4
,
20
}
;
std
::
cout


AnWu 01.11.2021 18:22

[QUOTE="Cake_"]

???:





[CODE]
#include
void
main
(
)
{
int
in
[
2
]
=
{
4
,
20
}
;
std
::
cout

LLIKOJIbHUK 01.11.2021 18:29

Цитата:

Сообщение от NOTBABYALONE

моё решение: поскольку в начале задачи написано, что она необязательная, её можно не решать) не благодарите меня за гениальное решение

это как физра в школе: если она последним уроком, значит последнего урока нет

.deserve 01.11.2021 19:27

competitive programming tour 2021 from hackerrank & facebook:





[CODE]
#include
int
main
(
)
{
int
a
{
}
,
b
{
}
;
std
::
cin
>>
a
>>
b
;
std
::
cout
>
a
;
std
::
cout


Smeruxa 01.11.2021 20:10

Цитата:

Сообщение от DonHomka

@Smeruxa сам сделал или нашел? у меня немного другой ответ

Учитель информатики делал и натыкал на такое решение, почучуть почучуть получилось так

Цитата:

Сообщение от Котовский.

и сколько ты так будешь перебирать через switch?)
допустим первое значение 3, а второе 10003
удачи расписать 10003 кейса)

циклы?

AnWu 01.11.2021 20:20

Цитата:

Сообщение от Smeruxa

Учитель информатики делал и натыкал на такое решение, почучуть почучуть получилось так

циклы?

циклы низя

AnWu 01.11.2021 20:25

Есть решение проще, @kin4stat сделал

kin4stat 01.11.2021 20:26

Цитата:

Сообщение от DonHomka

Есть решение проще, @kin4stat сделал

у @SC6UT аналогичное

.deserve 01.11.2021 20:39

ой **** дурак, там же интринсики незя было юзать:





Код:

#include
#if __has_include()
#include
#endif
enum
slot
{
SLOT_F
}
;
[
[
nodiscard
]
]
__int32
fucking_safe_get_num
(
__m128i fuck_in
,
slot slot
)
{
alignas
(
16
)
__int32 alc
[
4
]
;
_mm_store_si128
(
reinterpret_cast

(
alc
)
,
fuck_in
)
;
return
(
slot
==
SLOT_F
)
?
alc
[
3
]
:
alc
[
0
]
;
}
int
main
(
)
{
int
a
{
}
,
b
{
}
;
std
::
cin
>>
a
>>
b
;
__m128i fucking_SSE2_a
{
_mm_set_epi32
(
a
,
NULL
,
NULL
,
NULL
)
}
,
fucking_SSE2_b
{
_mm_set_epi32
(
b
,
NULL
,
NULL
,
NULL
)
}
,
fucking_max
{
_mm_max_epi32
(
fucking_SSE2_a
,
fucking_SSE2_b
)
}
;
__int32 result
=
fucking_safe_get_num
(
fucking_max
,
SLOT_F
)
;
printf
(
"Fucking result: %i\n"
,
fucking_max
)
;
std
::
system
(
"pause"
)
;
return
0
;
}


Dark. 01.11.2021 21:31

Подсыпать другу в кофе слабительного, посидев на троне около часа он 100% придумает ответ. Для лучшей эффективности забрать у него телефон и аэрозольный балончик.

Хайзенберг 02.11.2021 01:04

Мой мозг понимает только слова Хитка

YarmaK 02.11.2021 02:24

Можно отправить запрос в гугл и взять от него инфу, профит

zTechnology 04.11.2021 18:50

Цитата:

Сообщение от DonHomka

Есть задача:

Нельзя использовать: if, else, &&, ||, битовые операции
Инструменты: iostream, cmath, математика, геометрия
Цель: вывести наибольшее из чисел

У меня на решение без гугла ушел 1 час.
Тем кому просто интересно.

Спрячьте ответ под хайд

C++:





[CODE]
#include
using
namespace
std
;
int
main
(
)
{
int
q
,
w
;
cin
>>
q
>>
b
;
int
output
=
q
>
b
?
q
:
b
;
cout





Цитата:

Сообщение от .deserve

ой **** дурак, там же интринсики незя было юзать:





Код:

#include
#if __has_include()
#include
#endif
enum
slot
{
SLOT_F
}
;
[
[
nodiscard
]
]
__int32
fucking_safe_get_num
(
__m128i fuck_in
,
slot slot
)
{
alignas
(
16
)
__int32 alc
[
4
]
;
_mm_store_si128
(
reinterpret_cast

(
alc
)
,
fuck_in
)
;
return
(
slot
==
SLOT_F
)
?
alc
[
3
]
:
alc
[
0
]
;
}
int
main
(
)
{
int
a
{
}
,
b
{
}
;
std
::
cin
>>
a
>>
b
;
__m128i fucking_SSE2_a
{
_mm_set_epi32
(
a
,
NULL
,
NULL
,
NULL
)
}
,
fucking_SSE2_b
{
_mm_set_epi32
(
b
,
NULL
,
NULL
,
NULL
)
}
,
fucking_max
{
_mm_max_epi32
(
fucking_SSE2_a
,
fucking_SSE2_b
)
}
;
__int32 result
=
fucking_safe_get_num
(
fucking_max
,
SLOT_F
)
;
printf
(
"Fucking result: %i\n"
,
fucking_max
)
;
std
::
system
(
"pause"
)
;
return
0
;
}



shitcode и куча бесполезных функций...

kin4stat 04.11.2021 19:38

[QUOTE="zTechnology"]

C++:





[CODE]
#include
using
namespace
std
;
int
main
(
)
{
int
q
,
w
;
cin
>>
q
>>
b
;
int
output
=
q
>
b
?
q
:
b
;
cout

AnWu 04.11.2021 19:46

Решение: https://replit.com/@idonhomka/Task8611#main.cpp

Получаем модуль разницы чисел, складываем a + b + c и получается число ровно в два раза больше максимального числа (т.к. меньшее число доходит до большего при помощи разницы). Ну и делим на два.

Решили: @kin4stat @SC6UT

Моё решение было не таких простым, моё решение: (a * (a + c) + b * (b + c)) / (a * b), но оно получает деление на 0 если одно из чисел равно нулю.

zTechnology 04.11.2021 20:32

Цитата:

Сообщение от kin4stat

Тернарный условный оператор - тоже условный оператор

Нельзя использовать: if, else, &&, ||

Было написано это, так что тут уже не моя проблема, что условия были расписаны не полностью

kin4stat 04.11.2021 20:57

Цитата:

Сообщение от zTechnology

Нельзя использовать: if, else, &&, ||
Было написано это, так что тут уже не моя проблема, что условия были расписаны не полностью

На скрине условия прочитай

Michael_Komas 14.11.2021 21:04

не знаю, вроде как работает эта штука:

Код:





[CODE]
#include
#include
using namespace std;
int main(int argc, const char* argv[]) {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int num, num1;
cout > num;
cout > num1;
num > num1 ? cout


AnWu 19.11.2021 20:09

[QUOTE="Michael_Komas"]

не знаю, вроде как работает эта штука:

Код:





[CODE]
#include
#include
using namespace std;
int main(int argc, const char* argv[]) {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int num, num1;
cout > num;
cout > num1;
num > num1 ? cout

Vintik 07.03.2024 23:21

Цитата:

Сообщение от AnWu

Нельзя использовать: if, else, &&, ||, битовые операции
Инструменты: iostream, cmath, математика, геометрия
Цель: вывести наибольшее из чисел

Ну конечно хочется

C++:





Код:

a
>
b
?
a
:
b



Или хотя бы

C++:





Код:

int
x
;
if
(
a
>
b
)
x
=
a
;
else
x
=
b
;



Скрытое содержимое для пользователя(ей): AnWu

Еще проскользнул такой вариант...

C++:





[CODE]
int
n
[
2
]
=
{
a
,
b
}
;
// если b > a, то 1, если b



Во-первых, массивы, а во-вторых не работает при a = b. Уверен, что второе "но" устранимо, но нет смысла думать, т.к. массивы...

AnWu 07.03.2024 23:25

[QUOTE="Vintik"]

Ну конечно хочется

C++:





Код:

a
>
b
?
a
:
b



Или хотя бы

C++:





Код:

int
x
;
if
(
a
>
b
)
x
=
a
;
else
x
=
b
;



*** Скрытый текст не может быть процитирован. ***
Еще проскользнул такой вариант...

C++:





[CODE]
int
n
[
2
]
=
{
a
,
b
}
;
// если b > a, то 1, если b

Vintik 07.03.2024 23:35

Цитата:

Сообщение от AnWu

Решение валяется дет в теме, я уже не помню)

Нашёл.

Моё же)

Но мне понравилось твоё.

Помнится, была как-то задачка менять bool (0 -> 1, 1 -> 0).

Я как накрутил, что-то типа:

C++:





Код:

bool
b
;
-
1
*
(
-
1
+
b
)



Потом долго сокращал, а в конце понял, что это решается в общем случае (a -> b, b -> a):

Цитата:

Сообщение от Спойлер

Уравнение прямой
Код:

y = kx + p
.

b = k * a + p

a = k * b + p

=> вычитаем 1 из 2

a - b = k * (b - a)

Код:

k = -1
=> подставляем k = -1

b = -a + p

Код:

p = a + b
И так, например, функция перевода 5 -> 8, 8 -> 5 будет иметь вид:

Код:

z = 5 + 8 - z

kin4stat 08.03.2024 02:01

Цитата:

Сообщение от Vintik

Помнится, была как-то задачка менять bool (0 -> 1, 1 -> 0).

x^=1


Время: 01:45