問題 B: Hz的進制
時間限制: 1 Sec 內存限制: 128 MB提交: 20 解決: 14
[提交][狀態][討論版]
題目描述
輸入
輸出
樣例輸入
1
-5
樣例輸出
1
31
提示
#include<stdio.h> int main() { int n,i,j,s,a[35]; while(~scanf("%d",&n)) { s=0; if(n>=0) { while(n) { if(n%2==1) { s++; } n/=2; } } else { i=0; n=-n; while(n) { a[i]=n%2; n/=2; i++; }//將得到的每一個餘數存到a[i]裏 s=32-i; for(j=0;j<i;j++) { if(a[j]==1) a[j]=0; else a[j]=1; }取反 a[0]=a[0]+1;//取反後加一 for(j=0;j<i;j++) { a[j+1]=a[j+1]+a[j]/2; a[j]=a[j]%2; }進位 for(j=0;j<i;j++) { if(a[j]==1) s++; } } printf("%d\n",s); } return 0; }