Windows 换行符是 \r\n,而 *nix 和 Mac 系统的换行符都是 \n。由于洛谷是在 Linux 环境下评测的,因此换行符是 \n,这是与 CCF 的评测环境相符的。
在 C++ 的输入中有个机制,在 Windows 下在程序输入时默认会把 \r\n 转换成 \n,在 Linux 下不做处理。因此理论上,只要文件的换行符合所处的系统环境,那么程序的运行结果是没有区别的。
然而很多上传数据者并没有注意到使用正确的换行符。因此如果数据是在 Windows 下造的但不做任何处理就上传,在洛谷评测时就会在输入文件里多出一个 \r;如果数据恰好是在 *nix 下造的,那么就没有多出来的 \n。有些程序对数据的合法性有比较大的要求(尤其是在使用 getchar 时。两种不同情况下需要的调用次数不同)。做题者在做题时是不知道数据的换行符情况的;更为糟糕的是,有些题目因为历史原因数据里部分是 Windows 下造的,部分是 *nix 下造的。这往往会对用户造成极大困扰,特别是在初学者不知道这种问题的时候。
所以我的建议是,在用户上传文件时,可以选择让洛谷对数据进行处理,自动去除多余的 \r;或者在醒目的位置(比如上传&下载处)表明这类区别,以及放置可以自动除去多余 \r 的程序。