zoukankan      html  css  js  c++  java
  • COJ 1059

    非常好玩的一道题。能够熟悉下位操作实现和玩一玩bitset这个容器

    Description

    We define the parity of an integer N as the sum of the bits in binary representation computed modulo two. As an example, the number 21 = 10101 has three 1s in its binary representation so it has parity 3 (mod 2), or 1. In this problem you have to calculate the parity of an integer 1 <= I <= 2147483647 (2^31-1). Then, let start to work...

    Input specification

    Each line of the input has an integer I and the end of the input is indicated by a line where I = 0 that should not be processed.

    Output specification

    For each integer I in the input you should print one line in the form "The parity of B is P (mod 2)." where B is the binary representation of I.

    Sample input

    1
    2
    10
    21
    0

    Sample output

    The parity of 1 is 1 (mod 2).
    The parity of 10 is 1 (mod 2).
    The parity of 1010 is 2 (mod 2).
    The parity of 10101 is 3 (mod 2).

    使用bitset来实现。注意bitset的高低为存储顺序,是底位到高位。索引i右0到大的:

    void NumericParity()
    {
    	int n = 0;
    	bitset<32> bi;
    	while (cin>>n && n)
    	{
    		bi = n;		
    		cout<<"The parity of ";
    		bool flag = false;
    		for (int i = bi.size() - 1; i >= 0 ; i--)
    		{
    			flag |= bi.test(i);
    			if (flag) cout<<bi[i];
    		}		
    		cout<<" is "<<bi.count()<<" (mod 2).
    ";
    	}
    }

    自家自制的位操作:

    static bool biNum[32];
    
    int intTobi(int n)
    {
    	int i = 0, c = 0;
    	while (n)
    	{
    		c += n % 2;
    		biNum[i++] = n % 2;
    		n >>= 1;
    	}
    	return c;
    }
    
    void NumericParity2()
    {
    	int n = 0;
    	while (cin>>n && n)
    	{
    		fill(biNum, biNum+32, false);
    		cout<<"The parity of ";
    		int c = intTobi(n);
    		bool flag = false;
    		for (int i = 31; i >= 0 ; i--)
    		{
    			flag |= biNum[i];
    			if (flag) cout<<biNum[i];
    		}		
    		cout<<" is "<<c<<" (mod 2).
    ";
    	}
    }






  • 相关阅读:
    HTML5 闹钟例子程序
    程序员书籍,你值得收藏
    mybatis入门案例测试常见问题以及解决方法
    jquery对Select标签的操作
    Linux下mysql整库备份
    Windows 命令提示符下查看 apache 错误的方法
    将 DataTable 转化为 Excel Xml 格式供下载
    Infragistics netadvantage UltraGrid (UltraWinGrid) 编程手记
    报表设计技巧交叉报表模板
    Gentle.NET Users' Guide
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5237666.html
Copyright © 2011-2022 走看看