我的代码:
#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 ...
在本地编译我的代码,这很正常。我的所有其他问题解决方案也遇到了同样的错误。有什么想法吗?
答案 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)。
使用scanf
或cin
等任何标准方法接收您的输入,并使用printf
或cout
来提供输出。不要指望在argc
或argv
中有任何有用的内容。
看看这个FAQ on Codeforces。
另一位着名在线评委Codechef的摘录,也适用于Codeforces。
如果您使用除使用标准输入和输出流之外的任何方法 - 例如,使用命令行参数,从文件读取,打开某种对话框或其他方式 - 您将永远不会被判断为正确。< / p>