PDA

Просмотр полной версии : Задачка по математике


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
*** Скрытый текст не может быть процитирован. ***


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

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

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


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

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


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

AnWu
01.11.2021, 16:38
@Smeruxa (https://www.blast.hk/members/422424/) сам сделал или нашел? у меня немного другой ответ

kin4stat
01.11.2021, 17:07
саморазвитие, понимать что и как может работать в подкорке





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


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

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
Нельзя использовать: if, else, &&, ||, битовые операции


case

meowprd
01.11.2021, 17:35
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
моё решение: поскольку в начале задачи написано, что она необязательная, её можно не решать) не благодарите меня за гениальное решение


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

.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
@Smeruxa (https://www.blast.hk/members/422424/) сам сделал или нашел? у меня немного другой ответ


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



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


циклы?

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

циклы?


циклы низя

AnWu
01.11.2021, 20:25
Есть решение проще, @kin4stat (https://www.blast.hk/members/161331/) сделал

kin4stat
01.11.2021, 20:26
Есть решение проще, @kin4stat (https://www.blast.hk/members/161331/) сделал


у @SC6UT (https://www.blast.hk/members/406860/) аналогичное

.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
Есть задача:

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

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

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



C++:






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







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





[CODE]
#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 (https://www.blast.hk/redirect/aHR0cHM6Ly9yZXBsaXQuY29tL0BpZG9uaG9ta2EvVGFzazg2MT EjbWFpbi5jcHA)

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

Решили: @kin4stat (https://www.blast.hk/members/161331/) @SC6UT (https://www.blast.hk/members/406860/)

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

zTechnology
04.11.2021, 20:32
Тернарный условный оператор - тоже условный оператор


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

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

kin4stat
04.11.2021, 20:57
Нельзя использовать: 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
Нельзя использовать: if, else, &&, ||, битовые операции
Инструменты: iostream, cmath, математика, геометрия
Цель: вывести наибольшее из чисел


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

C++:






a
>
b
?
a
:
b




Или хотя бы

C++:






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




Скрытое содержимое для пользователя(ей): AnWu (https://www.blast.hk/members/161656/)

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

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
Решение валяется дет в теме, я уже не помню)


Нашёл.

Моё же)

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

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

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

C++:






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




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




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


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

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


x^=1