混合颜料-求向量组的秩

混合颜料

http://www.nowcoder.com/questionTerminal/5b1116081ee549f882970eca84b4785a

1 xor是位运算符亦或^;
2 x^y (x&y)<<1 可以模拟加法,而且在不考虑进位的情况下,x^y就可以模拟加法。
3 这题的数学本质是求向量组的秩,模拟高斯消元法即可

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            int[] colors=new int[n];
            for(int i=0;i<n;i++){
                colors[i]=sc.nextInt();
            }
            Arrays.sort(colors);
            for(int i=n-1;i>=0;i--){
                for(int j=i-1;j>=0;j--){
                    if((colors[i]^colors[j])<colors[j]){
                        colors[j]^=colors[i];
                    }
                }
                Arrays.sort(colors);

            }
            int cnt=0;
            for(int a:colors){
                if(a!=0) cnt++;
            }
            System.out.println(cnt);

        }
    }
}
全部评论

相关推荐

评论
1
收藏
分享
牛客网
牛客企业服务