![在这里插入图片描述](https://img-blog.csdnimg.cn/20191218211850418.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW5nZ2lybHpoYW5nYm95,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191218211904661.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW5nZ2lybHpoYW5nYm95,size_16,color_FFFFFF,t_70)
注解
1、简单枚举,把100以内的2的次方数都列举出来,只要找到相等的就输出,如果大于,就减去。
代码
#include <iostream>
using namespace std;
int main() {
int a[] = {64, 32, 16, 8, 4, 2, 1};
int n;
cin>>n;
while(n){
for(int i=0; i<7; i++){
if(n>a[i]){
n -= a[i];
}
if(n==a[i]){
cout<<n<<endl;
break;
}
}
cin>>n;
}
return 0;
}
结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191218212100134.png)