今天金山笔试一题目的深入,2006-10-21

出自求职百科

跳转到: 导航, 搜索

  题目要求:不用临时变量,交换两个整数的值。

  当场的所答:

=======

a=a+b;

b=a-b;

a=a-b;

=======

另解:

========

a=a^b;

b=a^b;

a=a^b;

========

  当场先用异或做了半天,没做出来,等其它的题目做完之后,反过来再继续,就用了上述所述的当场答案。在回来的路上,跟同学讨论,自己在琢磨,最后终于正解了异或这种解法。

  再到网上搜了一下异或的用法,它也常用于密码学。

  如下:

=================================

int c,p,key=8;//c(Ciphertext)代表密文,p代表明文,key代表密钥

cin>>p;

c=p^key;

p=c^key;

=================================

  上面是一个简单的密码编程问题,p是用户登录时输入的密码,c是存在数据库中的数据,key是已经定义好的密钥。这样,如果别人盗取了数据库中的密码,用该密码登录时,会被提示“该用户密码错误,请确定后重新输入”。呵呵,这只是一个简单的密码编码。当然,常用的不会这么简单。


  P.S :真心希望自己通过金山的笔试,取得面试资格。同时,又多了一种思路,额外收获,欣喜!


个人工具
公司索引
  • A   B   C   D   E   F   G
  • H   I   J   K   L   M   N
  • O    P
  •     Q    R    S    T
  • U    V    W    X    Y    Z
工具箱