#include <iostream> #include "algorithm" #include "cmath" #include "string" #include <vector> using namespace std; int main() { int sav[8]={1,2,4,8,16,32,64,128};//2^n事先存储 int er[8]={0};//存储二进制01 int phigh=7; int cur=0; int sum=100; while(phigh>=0){ cur+=sav[phigh]; if(cur>sum){ cur-=sav[phigh]; //cout<<"情况1"<<cur<<endl; phigh--;//之前忽略了这个 //cur=0; } else if(cur==sum){ er[phigh]=1; //cout<<"情况2"<<cur<<endl; break; } else if(cur<sum){ er[phigh]=1; //cout<<"情况3"<<cur<<endl; phigh--; } } for(int i=0;i<8;i++){ cout<<er[i]; } }
常规解法:
#include <iostream> #include "algorithm" #include "cmath" #include "string" #include <vector> using namespace std; int main() { int sum=100; vector<int> res; while(sum){ res.push_back(sum%2); sum=sum/2; } reverse(res.begin(),res.end()); for(vector<int>::iterator it=res.begin();it!=res.end();it++) cout<<*it; }
原文:https://www.cnblogs.com/cstdio1/p/11248555.html