close

內容
一個數在電腦裡遞增時需要進位幾次。


輸入說明
輸入的每一行有一個十進制正整數 N (1<=N<=2147483647)。輸入的最後一行有一個 0,代表輸入的結束,這個數字請勿做任何處理。


輸出說明
對於每個正整數 N ,請輸出以二進制計算 N+1 時所需的進位次數。 

 

感謝 曹吉百 https://zerojudge.tw/ShowThread?postid=14846&reply=0

請大家一定要先去看他的喔!

 

C++

//利用短除法
#include<stdio.h>
int main()
{
    int n,count;
    while(scanf("%d",&n) && n)
    {
        count=0;
        while(n%2)
        {
            count++;
            n/=2;
        }
        printf("%d\n",count);
    }
}
 

 

如果看不懂可以參考這裡

二進位.png

 

橘色是一般轉換的寫法。紅色是程式執行的方向。所以當while判斷餘數為0,就可以結束,因為只要算+1時會進位幾次。而遇到0就不會再進位了,所以不用再計算下去。

再次感謝曹吉百大大,這個方法真的好聰明,謝謝你的分享。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 豪CO 的頭像
    豪CO

    程式道路,必為豐富

    豪CO 發表在 痞客邦 留言(0) 人氣()