把喜欢藏进代码里
题号:NC239820
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

纤云弄巧,飞星传恨,银汉迢迢暗度。金风玉露一相逢,便胜却人间无数。柔情似水,佳期如梦,忍顾鹊桥归路。两情若是久长时,又岂在朝朝暮暮。-- 《鹊桥仙·纤云弄巧》
又是一年七夕,不知道正在看此题的牛友,是否在想念、期待心中的另一半呢?多么浪漫的节日啊。 
💒 派派也有非常想念的人,他想用自己的方式表达出自己的喜欢:

派派写代码时,非常喜欢在注释里藏着一些情话,他希望有一天想念的人能够知道这些。如此含蓄隐晦的表达方式,让派派的心上人摸不着头脑(不存在的心上人增加了)。
他求助你写出一个摘取注释的小工具,来统计这些情话。

输入描述:

更新:此段文本包含一段修正:
修正前:
数据保证,这些语言仅包含: c, cpp, cxx, cc, js, php, html, go, java, python。且代码长度不会超过 1314520 字符。
修正后:
数据保证,这些语言后缀仅包含: c, cpp, cxx, cc, js, php, html, go, java,py。且代码长度不会超过 1314520 字符。
-----
每份标准输入首先都将伴随着这份代码的文件名,如 
随后一行包含一个整数 n,描述这段代码的长度,接着的 n 行表示这份代码。

数据保证,第一行 -- 语言的文件名中不会包含空格、长度不超过 52 字符,且仅会包含一个句点
数据保证,这些语言后缀仅包含: c, cpp, cxx, cc, js, php, html, go, java,py。且代码长度不会超过 1314520 字符。
数据保证,不会包含超过一行的块注释
数据保证,引号中不会包含注释所包含的字符,即,除非为注释,下述内容不会出现

输出描述:

摘取出所有注释消息。格式如  其中  表示行号,从 1 开始编号。
双引号囊括的内容需要进行转义,如果你不明白什么是转义,请直接使用 

为此,你也许需要下面的表格:

说明 1:什么是 
在 C 语言系列中,一行的内容可以用反斜杠传递至下一行,即 // some comments \
说明 2:什么是「内联其他语言」?
在  Html (网页文件)中,将嵌入多种层叠样式表(即 CSS)、脚本(如 PHP、JavaScript 等)以增强、美化网页功能。本题中将不会出现这样的情况。
说明 3:什么是 cxx, cc ?
这两者也是 C++ 文件的后缀名。也许是为了区别 C 语言预处理器。
说明 4:Python 的注释是啥?
Python 的行注释以井号开头,块注释(也称文档注释)是如下的字符串:

说明 5:派派怎么这么毒瘤啊?
嘿嘿,嘿嘿嘿嘿 🤤。
示例1

输入

复制
Patricky.c
6
#include <stdio.h>
int main() { // I cares none but you tonight.
  puts("qwq please dont condemn me for this problem.");
  puts("If you've passed all problems except this, congrats! But I trust you could pass this one easily!");
  return 0 ^ 0; /* 0 ^ 0 => 0 xor 0 equals 0 just like my eternal love to him.*/
}

输出

复制
#2: " I cares none but you tonight."
#5: " 0 ^ 0 => 0 xor 0 equals 0 just like my eternal love to him."
示例2

输入

复制
checker.py
17
import os

# ananana

cmd = 'python -c "'
while True:
    try:
        s = input()
        cmd += s + (';\n' if s != '' else '')
    except EOFError: break

cmd += '"'

if os.system(cmd) != 0 or os.popen(cmd).read().splitlines()[0][:7] != '1314520':
    print('WA')
else:
    print('AC')

输出

复制
#3: " ananana"
示例3

输入

复制
patricky_loves_you.php
11
<?php
# Love all, trust a few, do wrong to none.

function call() {
	return "anything";
} //it"

true /* I love you! */ && /* I love you! */ true;

var_dump(call());
?>

输出

复制
#2: " Love all, trust a few, do wrong to none."
#6: "it\""
#8: " I love you! "
#8: " I love you! "

说明

\rm PHP, actually the best programming language in the world, has two kinds of ways for line comment.

备注:

本题的版本经过了下面的一些迭代:
  写出一段代码,其既是 C++ 又是 ,两份代码均能输出 1314520
这是最早的版本,思路来自 2022 Codeforces 愚人节。然而 spj 无法做到这样的事 😭。于是派派换了一个版本:
  给出一段合法的 C++ 代码,判断其是否也是一段  代码,如果是,那么他们能都输出 1314520 吗?
我的想法当然不是让选手写一个解释器来翻译整段代码,而是通过内置函数  来判断,然而牛客(绝大多数 OJ 都如此)为了安全,当然不会暴露出系统相关的函数 😠。

不过这个问题本身也并不复杂,大家可以自己尝试一下。