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); } }
如果看不懂可以參考這裡
橘色是一般轉換的寫法。紅色是程式執行的方向。所以當while判斷餘數為0,就可以結束,因為只要算+1時會進位幾次。而遇到0就不會再進位了,所以不用再計算下去。
再次感謝曹吉百大大,這個方法真的好聰明,謝謝你的分享。
全站熱搜