2016-10-11 43 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。

如果您使用除使用標準輸入和輸出流以外的任何方法 - 例如,使用命令行參數,從文件讀取,打開某種對話框或其他方式 - 您將永遠不會被判斷正確。

相關問題