Codeforces测试服务器错误,在本地计算机上无法重现

时间:2016-10-11 00:47:58

标签: c++ c++11 g++

我的代码:

#include <stdlib.h>
#include <iostream>
#include <math.h>

int main(int argc, char *argv[]) {

  long long n = atoi(argv[1]);
  long long m = atoi(argv[2]);
  long long a = atoi(argv[3]);

  if (n == 0 || m == 0 || a == 0) {
    std::cout << "" << 0 << std::endl;
    return 0;
  }

  long long num_tiles = ceil(n / a) * ceil(m / a);

  if (num_tiles == 0) num_tiles = 1;

  std::cout << "" << num_tiles << std::endl;
  return 0;
}

这会在使用GNU C ++ 11的Codeforces测试服务器上产生错误(“测试1上的运行时错误”)。我正在使用g++ -std=c++11 ...在本地编译我的代码,这很正常。我的所有其他问题解决方案也遇到了同样的错误。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这些行是罪魁祸首:

int main(int argc, char *argv[]) {
  long long n = atoi(argv[1]);
  long long m = atoi(argv[2]);
  long long a = atoi(argv[3]);

在在线评判中,您必须从标准输入(STDIN)输入并输出到标准输出(STDOUT)。

使用scanfcin等任何标准方法接收您的输入,并使用printfcout来提供输出。不要指望在argcargv中有任何有用的内容。

看看这个FAQ on Codeforces

另一位着名在线评委Codechef的摘录,也适用于Codeforces。

  

如果您使用除使用标准输入和输出流之外的任何方法 - 例如,使用命令行参数,从文件读取,打开某种对话框或其他方式 - 您将永远不会被判断为正确。< / p>