#27569: 為甚麼會錯?謝謝


cjw931027@gmail.com (noob)

學校 : 北京大学
編號 : 150971
來源 : [1.160.5.51]
最後登入時間 :
2025-05-26 11:31:04

#include <iostream>

using namespace std;

 

int main(){

int ans=1,x,y;

while(cin>>x>>y){

int sum=x;

for(int i=x+1;i<y;i++){

sum+=i;

if(sum<=y){

ans+=1;

}

 

else if(sum>=y){

cout<<ans<<endl;

break;

}

}

}

 

return 0;

}

#27574: Re:為甚麼會錯?謝謝


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.12.66.21]
最後登入時間 :
2025-04-20 17:19:22

#include

using namespace std;

 

int main(){

int ans=1,x,y;

while(cin>>x>>y){

int sum=x;

for(int i=x+1;i<y;i++){

sum+=i;

if(sum<=y){

ans+=1;

}

 

else if(sum>=y){

cout<<ans<<endl;

break;

}

}

}

 

return 0;

}

你的程式有些問題:

1. 你的ans沒有在每筆測資間重設

2. i<y有問題,因為i有可能大於y,你可以直接刪掉

3. 題目要求數字的總和會超過 m,所以最後一個數字也算一個

4. 你沒有考慮到n>m的狀況(應該要輸出1才對)

#27582: Re:為甚麼會錯?謝謝


cjw931027@gmail.com (noob)

學校 : 北京大学
編號 : 150971
來源 : [1.160.5.51]
最後登入時間 :
2025-05-26 11:31:04

請問第二個i<y直接刪掉是甚麼意思



#27587: Re:為甚麼會錯?謝謝


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.12.66.21]
最後登入時間 :
2025-04-20 17:19:22

請問第二個i<y直接刪掉是甚麼意思




n有可能小於零,這時i有可能大於y,你的i<y會造成迴圈提早結束,所以應該要刪掉