2016-10-11 8 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; 
} 

これは私がg++ -std=c++11 ...を使用していますGNU C++ 11を使用してCodeforcesテストサーバー上でエラー(「テスト1のランタイムエラー」)を作成します私のコードをローカルでコンパイルするとうまくいきます。私はまた、問題に対する私の他の解決策のすべてに対して同じエラーを受けました。何か案は?あなたが標準出力(STDOUT)に標準入力(STDIN)と、出力から入力を取らなければならないオンライン裁判官で

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

+0

問題はコンパイル中ではありません(あなたの '#include 'style'が90年代以降廃止されているにもかかわらず)、あなたのプログラムは間違っています。初心者は、これがするべきこととは関係なく、 'ceil(n/a)'は意味をなさない。 –

+0

@BaummitAugenあなたのコメントを積極的に詳しく説明してください。 – estro

+0

'n/a'は整数なので、なぜそれに' ceil'を呼びますか?また、 'stdlib.h'の代わりに' cstdlib'を使い、 'std :: atoi'(与えられたLHSの関数の間違った選択btw、' atoi'の代わりにdocsを読むなど)を使います。 –

答えて

3

これらの行は、犯人です。

あなたの入力を取り、あなたの出力を与えることprintfまたはcoutを使用するscanfまたはcinのような標準的な方法のいずれかを使用します。 argcまたはargvに有用なものはありません。

このFAQ on Codeforcesをご覧ください。

他の有名なオンラインジャッジのCodechef(コードフォースにも適用されます)の抜粋です。

標準入出力ストリーム以外の方法を使用する場合(コマンドライン引数の使用、ファイルからの読み取り、何らかの種類のダイアログボックスを開くなど)、決して判断されません正しい。

関連する問題