HDU 2051 Bitset
解题报告:
题目大意:现有一个十进制的数n,问n的二进制表示应该是多少。
简单题,直接暴力的方法,输入一个n ,每次n--,同时保存结果的数组第一位加一,然后再暴力判断是否要进位。最后将储存结果的那个数组倒着输出就是了。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<stdio.h> 2 #include<string.h> 3 int main() { 4 int n,ans[55]; 5 while(scanf("%d",&n)!=EOF) { 6 memset(ans,0,sizeof(ans)); 7 while(n--) { 8 ans[1]+=1; 9 if(ans[1]==2) 10 for(int i=2;i<=50;++i) { 11 if(ans[i-1]>=2) { 12 ans[i-1]=0; 13 ans[i]+=1; 14 } 15 } 16 } 17 int flag=0; 18 for(int i=51;i>=1;--i) { 19 if(ans[i]!=0) 20 flag=1; 21 if(flag) 22 printf("%d",ans[i]); 23 } 24 printf("\n"); 25 } 26 return 0; 27 }