Description
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
Input
本试题没有输入。
Output
输出32行,按从小到大的顺序每行一个长度为5的01串。
Sample Output
00000
00001
00010
00011
①、暴力
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
#include <iomanip>
typedef long long LL;
using namespace std;
#define memset(a,n) memset(a,n,sizeof(a))
#define INF 0x3f3f3f3f
#define mod 10007
#define PI acos(-1)
int main()
{
cout<<"00000"<<endl;
cout<<"00001"<<endl;
cout<<"00010"<<endl;
cout<<"00011"<<endl;
cout<<"00100"<<endl;
cout<<"00101"<<endl;
cout<<"00110"<<endl;
cout<<"00111"<<endl;
cout<<"01000"<<endl;
cout<<"01001"<<endl;
cout<<"01010"<<endl;
cout<<"01011"<<endl;
cout<<"01100"<<endl;
cout<<"01101"<<endl;
cout<<"01110"<<endl;
cout<<"01111"<<endl;
cout<<"10000"<<endl;
cout<<"10001"<<endl;
cout<<"10010"<<endl;
cout<<"10011"<<endl;
cout<<"10100"<<endl;
cout<<"10101"<<endl;
cout<<"10110"<<endl;
cout<<"10111"<<endl;
cout<<"11000"<<endl;
cout<<"11001"<<endl;
cout<<"11010"<<endl;
cout<<"11011"<<endl;
cout<<"11100"<<endl;
cout<<"11101"<<endl;
cout<<"11110"<<endl;
cout<<"11111"<<endl;
return 0;
}
②、十进制转化成二进制
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
typedef long long LL;
using namespace std;
#define memset(a,n) memset(a,n,sizeof(a))
#define INF 0x3f3f3f3f
#define mod 10007
void Judge(int x)
{
int a[10];
int cnt=0;
while(x)
{
a[cnt++]=x%2;
x/=2;
}
for(int i=cnt;i<5;i++)
a[i]=0;
for(int i=4;i>=0;i--)
cout<<a[i];
}
int main()
{
for(int i=0;i<32;i++){
Judge(i);
cout<<endl;
}
}
十进制转化成二进制
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
typedef long long LL;
using namespace std;
#define memset(a,n) memset(a,n,sizeof(a))
#define INF 0x3f3f3f3f
#define mod 10007
int main()
{
for(int i=0;i<32;i++){
cout<<i%32/16<<i%16/8<<i%8/4<<i%4/2<<i%2<<endl;
}
return 0;
}
③、五层循环输出
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
typedef long long LL;
using namespace std;
#define memset(a,n) memset(a,n,sizeof(a))
#define INF 0x3f3f3f3f
#define mod 10007
int main()
{
int a,b,c,d,e;
for(a=0; a<2; ++a)
for(b=0; b<2; ++b)
for(c=0; c<2; ++c)
for(d=0; d<2; ++d)
for(e=0; e<2; ++e)
cout<<a<<b<<c<<d<<e<<endl;
return 0;
}
④、C++库中的 bitset 类型
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
#include <bitset>
typedef long long LL;
using namespace std;
#define memset(a,n) memset(a,n,sizeof(a))
#define INF 0x3f3f3f3f
#define mod 10007
int main()
{
for(int i=0;i<32;i++)
cout<<bitset<5>(i)<<endl;
}
// bitset<n>(a) : 输出a的n位二进制数
另外补充:
int n=100;
cout<<bitset<5>(n)<<endl; // 输出二进制,用 bitset 控制输出的位数
cout<<dec<<n<<endl; // 输出十进制
cout<<oct<<n<<endl; // 输出八进制
cout<<hex<<n<<endl; // 输出十六进制
ANS:
00100
100
144
64