2016-10-11 39 views
0

我的代码上不可再现:Codeforces测试服务器错误,本地机器

#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; 
} 

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

+0

问题不在编译中(尽管'#include''style'自90年代起被弃用),您的程序是不正确的。对于初学者来说,不管这个应该做什么,“ceil(n/a)”都没有意义。 –

+0

@BaummitAugen您可以请建设性地详细说明您的评论 – estro

+0

好吧,因为'n/a'是一个整数,你为什么称它为'ceil'?另外,使用'cstdlib'而不是'stdlib.h','std :: atoi'(错误的给定LHS顺序选择函数,阅读文档)而不是'atoi'等等。 –

回答

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。

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

相关问题