這題的問題大概就m<0的時候。
sum=0
首先,討論n>=m,那sum加一次之後就跳出迴圈;當n<m的時候,只要進入迴圈讓sum加一次n之後
sum就會比m還小,之後就跟一般的狀況一樣。
所以設一個布林變數=true,在迴圈條件加上或,讓迴圈至少會跑一次,在迴圈裡把true調成false就好了。
範例如下:
#include <iostream>
#include<math.h>
using namespace std;
int main()
{
int n,m,sum,counter;
bool if_first;
while(cin>>n>>m)
{
if_first=true;
sum=0;
counter=0;
while(sum<=m||if_first)
{
if_first=false;
sum+=n++;
counter++;
}
cout<<counter<<endl;
}
return 0;
}
這題的問題大概就m<0的時候。
sum=0
首先,討論n>m,那sum加一次之後就跳出迴圈;當n<=m的時候,只要進入迴圈讓sum加一次n之後
sum就會比m還小,之後就跟一般的狀況一樣。
所以設一個布林變數=true,在迴圈條件加上或,讓迴圈至少會跑一次,在迴圈裡把true調成false就好了。
範例如下:
#include
#include
using namespace std;
int main()
{
int n,m,sum,counter;
bool if_first;
while(cin>>n>>m)
{
if_first=true;
sum=0;
counter=0;
while(sum<=m||if_first)
{
if_first=false;
sum+=n++;
counter++;
}
cout<<counter<<endl;
}
return 0;
}