#25084: 想法參考


asddf610419@gmail.com (李小爆)

學校 : 不指定學校
編號 : 145232
來源 : [140.114.223.26]
最後登入時間 :
2021-05-07 21:11:37
a215. 明明愛數數 | From: [140.114.223.26] | 發表日期 : 2021-04-20 13:42

這題的問題大概就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;

}

 

 
#25085: Re:想法參考


asddf610419@gmail.com (李小爆)

學校 : 不指定學校
編號 : 145232
來源 : [140.114.223.26]
最後登入時間 :
2021-05-07 21:11:37
a215. 明明愛數數 | From: [140.114.223.26] | 發表日期 : 2021-04-20 13:44

這題的問題大概就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;

}

 



 
ZeroJudge Forum