#12503: C++簡易參考解答


shawn2000100 (東華財金)

學校 : 國立東華大學
編號 : 57300
來源 : [27.53.168.5]
最後登入時間 :
2021-09-19 19:53:19
a414. 位元運算之進位篇 -- c910335 | From: [134.208.3.49] | 發表日期 : 2017-08-02 16:03

#include <iostream>
using namespace std;

int main()
{
int input, ans;
while (cin >> input && input != 0)
{
for(ans = 0; input > 0 && input % 2 == 1; ans++)
input /= 2;
cout << ans << endl;
}
return 0;
}

 
#13118: Re:C++簡易參考解答


fantasy_whale (幻光海鯨)

學校 : 國立中山大學
編號 : 42092
來源 : [27.242.108.33]
最後登入時間 :
2020-10-26 22:41:49
a414. 位元運算之進位篇 -- c910335 | From: [140.117.147.41] | 發表日期 : 2017-12-11 14:02

#include
using namespace std;

int main()
{
int input, ans;
while (cin >> input && input != 0)
{
for(ans = 0; input > 0 && input % 2 == 1; ans++)
input /= 2;
cout << ans << endl;
}
return 0;
}


for(ans = 0; input > 0 && input % 2 == 1; ans++)

裡的 input>0 其實是多餘的,因為當input=0時,input%2=0;

 

 
#13120: Re:C++簡易參考解答


shawn2000100 (東華財金)

學校 : 國立東華大學
編號 : 57300
來源 : [27.53.168.5]
最後登入時間 :
2021-09-19 19:53:19
a414. 位元運算之進位篇 -- c910335 | From: [1.164.26.95] | 發表日期 : 2017-12-11 20:33

#include
using namespace std;

int main()
{
int input, ans;
while (cin >> input && input != 0)
{
for(ans = 0; input > 0 && input % 2 == 1; ans++)
input /= 2;
cout << ans << endl;
}
return 0;
}


for(ans = 0; input > 0 && input % 2 == 1; ans++)

裡的 input>0 其實是多餘的,因為當input=0時,input%2=0;

感謝提醒阿哈哈哈   
突然看到自己快半年前寫的CODE  希望有幫助到新手就好~~~~

下面是更短更有效率的寫法 :

 #include <iostream>

using namespace std;

 

int main() {

    int input, ans;

    while ( cin >> input && input ) {

        for ( ans = 0; (input & 1); ++ans )

            input >>= 1;

        cout << ans << endl;

    }

    return 0;

}

 




 
#19901: Re:C++簡易參考解答


s1082951 (Amadeus)

學校 : 國立嘉義女子高級中學
編號 : 107976
來源 : [120.113.205.1]
最後登入時間 :
2024-01-30 22:28:47
a414. 位元運算之進位篇 -- c910335 | From: [120.113.184.1] | 發表日期 : 2019-11-09 00:04

#include
using namespace std;

int main()
{
int input, ans;
while (cin >> input && input != 0)
{
for(ans = 0; input > 0 && input % 2 == 1; ans++)
input /= 2;
cout << ans << endl;
}
return 0;
}


for(ans = 0; input > 0 && input % 2 == 1; ans++)

裡的 input>0 其實是多餘的,因為當input=0時,input%2=0;

感謝提醒阿哈哈哈   
突然看到自己快半年前寫的CODE  希望有幫助到新手就好~~~~

下面是更短更有效率的寫法 :

 #include

using namespace std;

 

int main() {

    int input, ans;

    while ( cin >> input && input ) {

        for ( ans = 0; (input & 1); ++ans )

            input >>= 1;

        cout << ans << endl;

    }

    return 0;

}

 



想問一下,為什麼你這樣寫就不會超時呢???

我跟你寫的幾乎一樣,但是一直超時




 
#19903: Re:C++簡易參考解答


s1082951 (Amadeus)

學校 : 國立嘉義女子高級中學
編號 : 107976
來源 : [120.113.205.1]
最後登入時間 :
2024-01-30 22:28:47
a414. 位元運算之進位篇 -- c910335 | From: [120.113.184.1] | 發表日期 : 2019-11-09 00:10

#include
using namespace std;

int main()
{
int input, ans;
while (cin >> input && input != 0)
{
for(ans = 0; input > 0 && input % 2 == 1; ans++)
input /= 2;
cout << ans << endl;
}
return 0;
}


for(ans = 0; input > 0 && input % 2 == 1; ans++)

裡的 input>0 其實是多餘的,因為當input=0時,input%2=0;

感謝提醒阿哈哈哈   
突然看到自己快半年前寫的CODE  希望有幫助到新手就好~~~~

下面是更短更有效率的寫法 :

 #include

using namespace std;

 

int main() {

    int input, ans;

    while ( cin >> input && input ) {

        for ( ans = 0; (input & 1); ++ans )

            input >>= 1;

        cout << ans << endl;

    }

    return 0;

}

 



想問一下,為什麼你這樣寫就不會超時呢???

我跟你寫的幾乎一樣,但是一直超時




 
ZeroJudge Forum