二进制异或

刺骨的言语ヽ痛彻心扉 2023-08-17 16:26 219阅读 0赞

https://blog.csdn.net/qq_35937273/article/details/82724247

我理解的代码:

  1. #include<bits/stdc++.h>
  2. int ans[32];
  3. int n,m,maxn,num;
  4. //当两个数相异或的时候,其最高位相同,则异或后的数就会比原有的数小
  5. //我们只需要找到每个数的最高位 然后找到拥有最多元素的那个最高位
  6. int main()
  7. {
  8. cin>>n;
  9. while(n--){ //测试案例
  10. cin>>m; //数组元素个数
  11. maxn=0;
  12. memset(ans,0,sizeof ans);
  13. for(int j=1;j<=m;j++){
  14. cin>>num;//数组元素
  15. for(int i=30;i>=0;i--){ //遍历最高位位数i
  16. if((1<<i)&num){ //此时i为num转化为二进制的最高位的位数
  17. ans[i]++; //ans[i]数组记录 最高位为i位有ans[i]个元素
  18. break;
  19. }
  20. }
  21. }
  22. for(int i=0;i<=30;i++)maxn=max(maxn,ans[i]);
  23. cout<<maxn<<endl;
  24. }
  25. return 0;
  26. }

转载于:https://www.cnblogs.com/Aiahtwo/p/11385018.html

发表评论

表情:
评论列表 (有 0 条评论,219人围观)

还没有评论,来说两句吧...

相关阅读

    相关 加密算法

    异或加密是一种很简单的加密算法,无论是原理还是操作性上,都不具备任何难度,所以,在做一些简单的加密时,被广为采用。 但因为很简答,破解起来也很容易,所以对于更加私密的信息,不