#5775: 為何WA(Line:4)?簡單題......


wuchonson (一WS神教o無用(進建中記得加資訊))

學校 : 臺北市立忠孝國民中學
編號 : 14037
來源 : [210.71.78.242]
最後登入時間 :
2013-06-17 08:56:19
a215. 明明愛數數 | From: [115.43.60.30] | 發表日期 : 2011-09-05 23:18

題目看來不太難

但不知道為甚麼會WA

而且答案和正確地差超多......

與正確輸出不相符(line:4)
您的答案為: 9
正確答案為: 202

不知道為甚麼?

程式碼:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    long long int a,b,i,j,an,t;
    while(cin>>a>>b){
    t=0;
    for(i=a,j=1;i<=b;i++,j++){
        t+=i;
        if(t>b){
           an=j;
           break;       
        }                 
    }
    if(a>0)cout<<an<<endl;
    else cout<<an-1<<endl;
   
}
    
        return EXIT_SUCCESS;
}

 

謝謝

 
#5776: Re:為何WA(Line:4)?簡單題......


wuchonson (一WS神教o無用(進建中記得加資訊))

學校 : 臺北市立忠孝國民中學
編號 : 14037
來源 : [210.71.78.242]
最後登入時間 :
2013-06-17 08:56:19
a215. 明明愛數數 | From: [115.43.60.30] | 發表日期 : 2011-09-05 23:23

題目看來不太難

但不知道為甚麼會WA

而且答案和正確地差超多......

與正確輸出不相符(line:4)
您的答案為: 9
正確答案為: 202

不知道為甚麼?

程式碼:

#include
#include

using namespace std;

int main(int argc, char *argv[])
{
    long long int a,b,i,j,an,t;
    while(cin>>a>>b){
    t=0;
    for(i=a,j=1;i<=b;i++,j++){
        t+=i;
        if(t>b){
           an=j;
           break;       
        }                 
    }
    if(a>0)cout<    else cout<   
}
    
        return EXIT_SUCCESS;
}

 

謝謝

抱歉

後來現其實程式碼有問題

在負數時會有錯誤的答案

但還是參不透其中的道理

請高手熱心幫幫初學者吧

謝謝

 
#5777: Re:為何WA(Line:4)?簡單題......


longbiau ((~o ̄▽ ̄)o Summer)

學校 : 臺北市立中正高級中學
編號 : 8414
來源 : [203.64.138.253]
最後登入時間 :
2013-02-27 15:34:10
a215. 明明愛數數 | From: [61.231.71.62] | 發表日期 : 2011-09-06 01:01

題目只給定m-n<=100000的限制,因此我不清楚m,n確切的範圍。
下面的回答是我先行假設m,n皆在int範圍內且可為負的情況:
先試試看這三組測資

Input Output

2 1
2 2
-100000 0

1
2
200002

for(i=a,j=1;i<=b;i++,j++){
        t+=i;
        if(t>b){
           an=j;
           break;
        }
}

直接地說,n + (n+1) + ... + (m-1) + m 未必大於 m。
那可惡的9是Line:3的an值,在Line:4時沒執行到for中的if,an值在沒更新的情況下被沿用,所以才會相差很多。
希望對你有幫助! 

 
ZeroJudge Forum