zoukankan      html  css  js  c++  java
  • ACM_Cipher(异或运算)

    Cipher

    Time Limit: 2000/1000ms (Java/Others)

    Problem Description:

    只剩两个小时就要正式开始第一次月赛了,大四师兄决定还是来出一道,找点存在感,出什么好呢。。。嗯,师兄最喜欢的就是加密了,为了留个好印象,我就来个最最最最最简单的加密吧。
    大家都知道,加密算法中最基本的是异或(xor).有同学不知道异或是什么?简单的说就是相同为0,不同为1。
    如两个数字1 xor 2 == 3数字是按位异或,也就是说表示为2进制,然后按位来异或01 xor 10 == 11
    一个简单的加密算法就是把所有的数同时异或某个数字key。现在给出一个加密过后的数组A,和一个加密用的key,你能帮忙找出加密前的数据吗?

    Input:

    输入包含多组测试,对于每组测试,首先输入两个整数n和m(1 <= n <= 100,1<=m<=10^9),分别代表数组的大小和加密用的key,接下来是n个数字的数组A(1<=Ai<=10^9),代表加密后的数组。当n和m为0时结束。
    

    Output:

    对于每组测试,输出加密前的数组。

    Sample Input:

    4 7
    6 4 2 0
    0 0
    

    Sample Output:

    1 3 5 7
    解题思路:简单的异或运算。如果A^B=C,那么这三个数中两两进行异或结果都能得到第三个数。
    AC代码:
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int main(){
     4     int n,m,x;
     5     while(cin>>n>>m&&(n+m)){
     6         for(int i=1;i<=n;++i){
     7             cin>>x;cout<<(x^m)<<(i==n?'
    ':' ');//直接输出异或结果
     8         }
     9     }
    10     return 0;
    11 }
  • 相关阅读:
    [杂题笔记]2021.08.18-2021.09.03,CF#741 Div.2&CF#736 Div.2&CF Global Round15&CF#739 Div3
    第一次博客作业
    《博弈论》
    迭代法-二分迭代求解低阶线性方程
    迭代法-牛顿迭代法
    logback扩展日志输出功能
    log4j2扩展日志输出功能
    c# clr创建mssql的存储过程、函数
    驰骋BPM,工作流
    Docker部署RocketMQ踩坑记录
  • 原文地址:https://www.cnblogs.com/acgoto/p/9226979.html
Copyright © 2011-2022 走看看