Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
// @param n `0 <= n`
// @param m `1 <= m`
// @return `(x ** n) % m`
constexpr long long pow_mod_constexpr(long long x, long long n, int m) {
if (m == 1) return 0;
unsigned int _m = (unsigned int)(m);
unsigned long long r = 1;
unsigned long long y = safe_mod(x, m);
while (n) {
if (n & 1) r = (r * y) % _m;
y = (y * y) % _m;
n >>= 1;
}
return r;
}
// Reference:
// M. Forisek and J. Jancina,
// Fast Primality Testing for Integers That Fit into a Machine Word
// @param n `0 <= n`
constexpr bool is_prime_constexpr(int n) {
if (n <= 1) return false;
if (n == 2 || n == 7 || n == 61) return true;
if (n % 2 == 0) return false;
long long d = n - 1;
while (d % 2 == 0) d /= 2;
constexpr long long bases[3] = {2, 7, 61};
for (long long a : bases) {
long long t = d;
long long y = pow_mod_constexpr(a, t, n);
while (t != n - 1 && y != 1 && y != n - 1) {
y = y * y % n;
t <<= 1;
}
if (y != n - 1 && t % 2 == 0) {
return false;
}
}
return true;
}
template <int n> constexpr bool is_prime = is_prime_constexpr(n);
И что эта херота делает? Сшивает кучу файлов в одну единицу трансляции, чтобы можно было отправить это на олимпиадный сайт?
// Fast modular multiplication by barrett reduction
// Reference: https://en.wikipedia.org/wiki/Barrett_reduction
// NOTE: reconsider after Ice Lake
struct barrett {
unsigned int _m;
unsigned long long im;
// @param m `1 <= m < 2^31`
barrett(unsigned int m) : _m(m), im((unsigned long long)(-1) / m + 1) {}
// @return m
unsigned int umod() const { return _m; }
// @param a `0 <= a < m`
// @param b `0 <= b < m`
// @return `a * b % m`
unsigned int mul(unsigned int a, unsigned int b) const {
// [1] m = 1
// a = b = im = 0, so okay
// [2] m >= 2
// im = ceil(2^64 / m)
// -> im * m = 2^64 + r (0 <= r < m)
// let z = a*b = c*m + d (0 <= c, d < m)
// a*b * im = (c*m + d) * im = c*(im*m) + d*im = c*2^64 + c*r + d*im
// c*r + d*im < m * m + m * im < m * m + 2^64 + m <= 2^64 + m * (m + 1) < 2^64 * 2
// ((ab * im) >> 64) == c or c + 1
unsigned long long z = a;
z *= b;
#ifdef _MSC_VER
unsigned long long x;
_umul128(z, im, &x);
#else
unsigned long long x =
(unsigned long long)(((unsigned __int128)(z)*im) >> 64);
#endif
unsigned int v = (unsigned int)(z - x * _m);
if (_m <= v) v += _m;
return v;
}
};
Интересно, у олимпиадников есть специальные олимпиадные библиотеки для алгоритмов и структур данных? Или они такое нахуеверчивают сами руками каждый раз, вызубрив все эти алгоритмы? Или у каждого уважающего себя олимпиадника есть свой говнонабор написанных им лично алгоритмов и структур данных, который он переиспользует в всяких разных олимпиадах?
Да, похоже что есть специальные о-ли-мпи-ад-ные библиотеки со всякой такой хуйней https://github.com/xennygrimmato/Data-Structures-and-Algorithms/
> A collection of some implementations of data structures and algorithms, primarily for competitive programming.
> Фиг знает... На оффлайн олимпиадах вообще не давали свой код приносить.
Т.е. олимпиады проверяют навык быстрого наговнивания некоторой хуйни, которая бы формально проходила все тесты?
Некоторые олимпиадные задачи заточены под использования бигинтов, а в крестах их еще не завезли, притом в каком-нибудь питоне эти бигинты есть из коробки, и поскольку в питоне не надо изобретать бигинты, писать на питоне такие задания заметно проще, чем на крестах. Не логичнее ли тогда для тех же крестов разрешить юзать какую-то бигинтовую либу? Может быть олимпиадникам надо пойти в крекстокомитет и им в пропозалы внести свои говнобиблиотеки для олимпиад? И чтоб было std::olympiad::какаятохуйня
A17: Spammers are criminal gangs. In 2004 and since, many other blacklists stopped after they were threatened or attacked. We also got a package from Ukraine with a dead rat inside and a message: "You are next!"
For security reasons we moved to a new location and have chosen to continue our war against spammers.
Art 34 Abs 5 BayMeldeG (Bavarian Law) grants that only national authorities can find out about us.
Добрый день, guestinho! Ваши недавние комментарии/посты/личные сообщения или другая активность на сайте нарушили правила сообщества Codeforces или не согласуются с нормами общения здесь. То, что было вами опубликовано, является бессмысленным, безыдейным, мусорным, чрезмерно эмоциональным, агрессивным, оскорбительным, бессмысленным или нарушающим иные общепринятые этические нормы цивилизованного общения. Возможно, опубликованный контент нарушал иные правила Codeforces. Возможно, контент был написан не на английском (или на русском, если вы указали этот язык для записи в блоге или комментария). Пожалуйста, впредь будьте взвешены в ваших суждениях, аргументированы, вежливы, следуйте приличиям, не нарушайте правила сообщества. Используйте здравый смысл при анализе, чтобы писать или не писать какой-либо контент. Не следует публиковать юмористический контент, особенно если он не интересен широкой части аудитории, повторяет существующий или не имеет отношения к соревновательному программированию. Ваш аккаунт был переведен в режим read-only на 48 часов. Ваши последние комментарии, записи в блог, личные сообщения удалены. Надеемся, что вы сделаете выводы и подобная ситуация впредь не повторится. В случае повторения нарушений к вашему аккаунту могут быть применены более серьезные штрафные санкции вплоть до его блокировки.
Вообще, зависит от того, зачем мы сишку туда портируем. Скорее всего, чтобы существующий код гонять. Иначе проще сделать новый язык и не париться.
Тогда можно сделать совместимую с двоичной машиной сёмантику для and, or и xor -- двойки трактовать как единички. Старый код в принципе будет работать если обмазать его tri2bin и bin2tri вокруг битоёбств.
А для троичной логики уже добавить новые операторы.
j123123 # 0
Да, этот код по стилю прям очень сильно напоминает херню из "kPHP". Это такой особый лимпиадный C/C++
j123123 # 0 ⇈
std::swap недостаточно перфомансно работает, да?
gostinho # 0 ⇈
j123123 # 0 ⇈
И что эта херота делает? Сшивает кучу файлов в одну единицу трансляции, чтобы можно было отправить это на олимпиадный сайт?
Интересно, у олимпиадников есть специальные олимпиадные библиотеки для алгоритмов и структур данных? Или они такое нахуеверчивают сами руками каждый раз, вызубрив все эти алгоритмы? Или у каждого уважающего себя олимпиадника есть свой говнонабор написанных им лично алгоритмов и структур данных, который он переиспользует в всяких разных олимпиадах?
j123123 # 0 ⇈
Да, похоже что есть специальные о-ли-мпи-ад-ные библиотеки со всякой такой хуйней
https://github.com/xennygrimmato/Data-Structures-and-Algorithms/
> A collection of some implementations of data structures and algorithms, primarily for competitive programming.
Или вот еще https://github.com/VandanRogheliya/Competitive-Programming-Setup/
дохуя находит
admin # 0 ⇈
ObeseYoungPidor # 0 ⇈
j123123 # 0 ⇈
gostinho # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
Это на онлайне можно каких-нибудь кусков по-быстрому накопипастить.
j123123 # 0 ⇈
Т.е. олимпиады проверяют навык быстрого наговнивания некоторой хуйни, которая бы формально проходила все тесты?
Некоторые олимпиадные задачи заточены под использования бигинтов, а в крестах их еще не завезли, притом в каком-нибудь питоне эти бигинты есть из коробки, и поскольку в питоне не надо изобретать бигинты, писать на питоне такие задания заметно проще, чем на крестах. Не логичнее ли тогда для тех же крестов разрешить юзать какую-то бигинтовую либу? Может быть олимпиадникам надо пойти в крекстокомитет и им в пропозалы внести свои говнобиблиотеки для олимпиад? И чтоб было std::olympiad::какаятохуйня
ObeseYoung # 0 ⇈
bot_batbot_batbot # 0 ⇈
bormand # 0
А теперь проифай их там, где этот primality check реально нужен... В каком-нибудь RSA 4096.
guest # 0 ⇈
bormand # 0 ⇈
Для крупных видимо надо больше базисов или формулу которая сильнее вероятность режет на каждом тесте.
guest # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
ObeseYoungPidor # 0 ⇈
guest # 0
A17: Spammers are criminal gangs. In 2004 and since, many other blacklists stopped after they were threatened or attacked.
We also got a package from Ukraine with a dead rat inside and a message: "You are next!"
For security reasons we moved to a new location and have chosen to continue our war against spammers.
Art 34 Abs 5 BayMeldeG (Bavarian Law) grants that only national authorities can find out about us.
guest # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
Тяжело программировать под Сетунь...
guest # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
Да, поведение бинарных операторов типа побитовово И и ИЛИ будет интересно
bormand # 0 ⇈
Фу! Отбрось бинарное мышление.
Пусть в char (трайте) будет 9 тритов. А sizeof(int) например 3 трайта будет.
guest # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
ObeseYoung # 0 ⇈
> логика
Вы о чем вообще?
bormand # 0 ⇈
Тогда можно сделать совместимую с двоичной машиной сёмантику для and, or и xor -- двойки трактовать как единички. Старый код в принципе будет работать если обмазать его tri2bin и bin2tri вокруг битоёбств.
А для троичной логики уже добавить новые операторы.
guest # 0 ⇈
Давай придумаем высокоуровневый ЯП для Сетуни.
Как будет выглядеть сортировка пузырьком?
bormand # 0 ⇈
Разве что бул можно сделать с да/нет/х.з. как в sql.
[email protected] # 0 ⇈
bormand # 0 ⇈
ObeseYoung # 0 ⇈
bormand # 0 ⇈
Какой эйблизм )))
guest # 0 ⇈
https://www.youtube.com/watch?v=Tw-P7xwFSjs
gostinho # 0 ⇈
guest # 0