題目看來不太難
但不知道為甚麼會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;
}
謝謝
題目看來不太難
但不知道為甚麼會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;
}
謝謝
抱歉
後來現其實程式碼有問題
在負數時會有錯誤的答案
但還是參不透其中的道理
請高手熱心幫幫初學者吧
謝謝
題目只給定m-n<=100000的限制,因此我不清楚m,n確切的範圍。
下面的回答是我先行假設m,n皆在int範圍內且可為負的情況:
先試試看這三組測資
Input | Output |
2 1 | 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值在沒更新的情況下被沿用,所以才會相差很多。
希望對你有幫助!