質問です

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
pon

質問です

#1

投稿記事 by pon » 15年前

http://rose.u-aizu.ac.jp/onlinejudge/Pr ... 34&lang=jp
この問題なのですが、以下のSourceだとWrong Answerになります。何が問題なのでしょうか。
int main(){
while(1){
double l[15]={0};
double sum[15]={0};
int flag=0;
for(int loop=0;loop<10;loop++){
if(scanf("%lf,",&l[loop]) == EOF){
flag=1;
break;
}
sum[loop]=sum[loop-1]+l[loop];
}
if(flag==1){
break;
}
double v1=0,v2=0;
scanf("%lf,%lf",&v1,&v2);
double ans=sum[9]*v1/(v1+v2);
int ret=-3;
for(int loop=0;loop<10;loop++){
if(sum[loop]>=ans){
ret=loop;
break;
}
}
if(ret==-3){
ret=9;
}
printf("%d\n",ret+1);
}
}

http://www.play21.jp/board/formz.cgi?ac ... &rln=61465
こちらもよろしくお願いします。

ideyan

Re:質問です

#2

投稿記事 by ideyan » 15年前

まだちゃんと見てないけど、とりあえず
>sum[loop]=sum[loop-1]+l[loop];
これ、loop=0の時まずくないですか?

後、SampleInputではうまくいっているんでしょうか?

pon

Re:質問です

#3

投稿記事 by pon » 15年前

確かにそこは何とかした方がよさそうですね。

SampleInputはうまくいっています。

ideyan

Re:質問です

#4

投稿記事 by ideyan » 15年前

該当箇所を

if(loop)sum[loop]=sum[loop-1]+l[loop];
else sum[loop]=l[loop];

と変更してsubmitしたらAcceptedになりましたよ。

pon

Re:質問です

#5

投稿記事 by pon » 15年前

そうですか!ありがとうございます。手元ではちゃんと動くのに何でなんでしょう

ideyan

Re:質問です

#6

投稿記事 by ideyan » 15年前

sum[loop]=sum[loop-1]+l[loop];
の部分で、お手持ちの環境ではたまたま
sum[-1]に該当する場所が0だったか何かで
(連続して割りつけられていて、l[14]辺りが参照されてそう)、
偶然うまく動いていただけではないでしょうか。

閉鎖

“C言語何でも質問掲示板” へ戻る