【ACM之旅】01序列

一、[题目] A+B Problem

时间限制:1.0s   内存限制:256.0MB

问题描述

对于长度为6位的一个01串,每一位都可能是0或1,一共有64种可能。它的前几个是:
000000
000001
000010
000011
000100
请按从小到大的顺序输出这64种01串。

输出格式

输出64行,每行一个01串。


二、[代码]:

PS. 01序列 也是一道入门级别的题目,考察的是对二进制数的理解与解析,我对此做出了如下两种解题算法。

算法一:利用二进制运算按位与得出各位值。

#include 
int main()
{
    for(char i=0;i<=0x3F;i++)
       std::cout<<(i&0x20?1:0)<<(i&0x10?1:0)<<(i&0x08?1:0)<<(i&0x04?1:0)<<(i&0x02?1:0)<<(i&0x01?1:0)<

算法二:利用函数itoa()对数值进行二进制转化。

ps. 在 VC9(VS2008)以上编译环境中 iostream 头文件包含了 string 头文件的内容,如果编译环境为 MinGW g++ 或其他,您必须分别包含头文件 stdio.h 和 string.h 才能编译通过。

#include 
int main()
{
  char a[6];
  for(char i=0;i<0x40;i++)
    printf("%06s\n",itoa(i,a,2));
  return 0;
}

欢迎评论和转载,转载请注明文章出处,我对此表示最真诚的敬意!

你可能感兴趣的:(ACM)