#P14518. [NFLSPC #8] APLSPC
[NFLSPC #8] APLSPC
Description
你需要编写一份代码,对于所要求的语言,满足:
- 在该语言的编译指令下,能正常运行并输出自身;
- 全字匹配意义下不包含任何该语言的关键字(如果你不知道什么是全字匹配,请参考评测细节一栏)。
这两个要求对于 C++ 和 Python 都必须满足。也就是说,这份代码要同时是合法的 C++ 和 Python 代码,并且满足以上要求。
在此前提下,你的代码还要尽可能短。
若你的代码满足所有条件并且长度不超过 250B,你将获得 分。若你的代码有一些条件没有满足,也能得到一定的分数,详见评分方式。
注意,我们会采用手段使得你的代码在运行时目录下没有源码,你不能也不应该采用调用源码文件等方式完成任务。
如果你对语法不熟悉,你可以访问 python.org 或 cppreference.com 获取相关信息。
Input Format
无
Output Format
由于本题洛谷不支持评测,请移步 hydro 提交,无需注册用户。
提交获得评测结果后,请点击测试点 1 的“状态”一栏,在跳出来的弹窗中复制 token: 后面的字符串(不包括空格)作为这次提交的 token。
之后,请在洛谷上提交一份代码,输出:第一行为 token 和你获得的分数,中间用一个空格隔开;第二行往下为你在 hydro 上提交的代码,换行格式为 LF。如:
aaaabbbbccccdddd0000111122223333aaaabbbbccccdddd0000111122223333 100
main()
{}
你可以直接在你的代码上修改,在开头加入输出 token 和分数的语句即可。
Hint
评测细节
以下为 hydro 上提交入口的评测细节,而非本题的评测细节。
你的代码不可以包含非 ASCII 字符,否则结果是未定义的。
首先,你的代码的所有换行符都会被强制换成 CRLF(\r\n),所以一个换行占据两个字节。
接下来,评测机会分别调用以下指令来运行你的代码:
/usr/bin/g++ code.cpp -std=c++2a -O2 -o code && ./code
python3 code.cpp
然后,评测机会使用以下指令来判断你的代码是否输出自身:
diff --strip-trailing-cr code.cpp out
这条指令会把行末的 CRLF 视为 LF,也就是说,你的代码在输出时无需关心特殊的换行符。
除此以外,该指令会进行完全严格的比较,也就是说行末空格等空白字符也必须完全一致。
最后,评测机会从关键字列表里查找你的代码是否包含关键字,查找方式为全字匹配。全字匹配的定义是,匹配的位置前后一个字符均不为数字,字母或下划线。如 int 可以匹配 (int),但不能匹配 print。关键字列表附在题目最后。
需要特别注意的是,标定的时间限制无意义,实际限制为 1000ms。你的代码如果运行超过 1000ms 将被强制结束,但是运行时间和空间并不会反映在评测结果中。
评分方式
定义你的初步分数 :
-
无论代码是否包含关键字,如果你的代码是 C++ 的合法代码,并且在 C++ 运行下输出了自身,但不是 Python 的合法代码,。
-
无论代码是否包含关键字,如果你的代码同时是 C++ 和 Python 的合法代码,并且在 C++ 运行下输出了自身,但在 Python 下没有,。
-
无论代码是否包含关键字,如果你的代码同时是 C++ 和 Python 的合法代码且在两种语言下都输出了自身,令 为你的代码长度,
- 其他情况下 。
是连续函数。注意 可能大于 。
最后,若你的代码不包含关键字,则你的最终得分为 ,否则为 。
关键字列表
以下是 C++ 的关键字列表:
{
"alignas", "alignof", "and", "and_eq", "asm", "auto", "bitand", "bitor", "bool", "break",
"case", "catch", "char", "char8_t", "char16_t", "char32_t", "class", "compl", "concept",
"const", "consteval", "constexpr", "constinit", "const_cast", "continue", "co_await",
"co_return", "co_yield", "decltype", "default", "delete", "do", "double", "dynamic_cast",
"else", "enum", "explicit", "export", "extern", "false", "float", "for", "friend", "goto",
"if", "inline", "int", "long", "mutable", "namespace", "new", "noexcept", "not", "not_eq",
"nullptr", "operator", "or", "or_eq", "private", "protected", "public", "register",
"reinterpret_cast", "requires", "return", "short", "signed", "sizeof", "static",
"static_assert", "static_cast", "struct", "switch", "synchronized", "template", "this",
"thread_local", "throw", "true", "try", "typedef", "typeid", "typename", "union", "unsigned",
"using", "virtual", "void", "volatile", "wchar_t", "while", "xor", "xor_eq"
}
以下是 Python 的关键字列表:
{
"False", "None", "True", "and", "as", "assert", "async", "await", "break", "class",
"continue", "def", "del", "elif", "else", "except", "finally", "for", "from", "global",
"if", "import", "in", "is", "lambda", "nonlocal", "not", "or", "pass", "raise", "return",
"try", "while", "with", "yield", "match", "case"
}
提示
- C++ 的 main 函数可以不定义返回类型。即,以下是一份合法的 C++ 代码:
main(){}
京公网安备 11011102002149号