Как известно в Codeforces нельзя использовать для чтения 64-битных чисел на С++ спецификатор %lld, а рекомендуется использовать %I64d. Как мне известно это связано с ОС сервера. Если у сервера Windows, то I64d, а если Linux, то %lld. Но если мы хотим автоматически определять, что использавать, I64d или %lld, можно записать код так:
if (defined(WIN32) || !defined(__GNUC__))
#define I "%I64d"
#else
#define I "%lld"
endif
Тогда можно писать так : scanf(I, x); и printf(I, x); Но при попытке сдать такой код предъявят ,что вы используете %lld. Почему??? Ведь используя выше код, автоматически будет использоваться либо %I64d, либо %lld, зависит от ОС проверяющего компютера. Прошу ответить администраторов.
Потому что ищется по подстроке ибо парсер адекватный написать не слишком легко(и не слишком полезно). как work around можно юзать
define l "%l" "ld"
Потому что при отправке проверка происходит следующим образом:
Никто не будет проверять, используется ли оно на самом деле, т.к. это технически очень трудно или даже невозможно.
В принципе это возможно. Но по сути это все равно, что написать компилятор)
Это невозможно в принципе. Известный факт, что не существует алгоритма который бы по программе представленной на некотором языке делал заключение завершиться ли она за конченое время, или будет работать бесконечно долго. Очевидно, что задача определения того выведется ли через "lld" хоть что-нибудь, не проще, и потому она также не разрешима.
Да я знаю про задачу останова. Но тут немного другое.
Вопрос не в том, выведется ли через нее что-нибудь, а используется ли она в каком-нибудь вызове
scanf
илиprintf
По-моему здесь достаточно было бы просто пропустить через препроцессор исходный код :) по крайней мере компилятор не нужен
То что вы видели это не ошибка при желании вы все равно можете отправить код с %lld. Это просто предупреждение, чтобы вы убедились что все хорошо.
Более того, там даже есть вроде галка: "Не показывать это предупреждение".
Вообще насколько я понимаю, %I64 — это особенность библиотеки msvcrt, с которой линкуется программа. Причём последние версии, поддерживают оба варианта (%I64d и %lld), но на тестирующем сервере, по видимости, стоит более старая версия.