题目
Description
计算一个无符号整数x中位的个数是奇数还是偶数。
Input
多组测试数据。每组测试数据包括一个无符号整数n(0<n<2^32-1)
Output
若包含偶数个1,则输出even,否则输出odd。
Sample Input
8
7
6
15
4294967294
4294967295
Sample Output
odd
odd
even
even
odd
even
代码块
因为题目中的测试数比较大,因此我用的是bigInteger类,如果想要优化一点,可以在int范围内的时候用普通的处理方法,用if判断一下,大的数再用bigInteger
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cn = new Scanner(System.in);
while(cn.hasNext()){
String str = cn.next();
BigInteger big = new BigInteger(str);
int count =0;
while(big.compareTo(new BigInteger(Integer.toString(0)))==1){
BigInteger big1 = big;
BigInteger t = new BigInteger(Integer.toString(2));
big = big.divide(t);
if(big.multiply(t).compareTo(big1)!=0){
count++;
}
}
if(count%2==0) System.out.println("even");
else System.out.println("odd");
}
}
}