1.1 有 A、B、C、D 四个人,要在夜里过一座桥。
他们通过这座桥分别需要耗时 1、2、5、10 分钟,只有一支手电,并且同时最多只能
两个人一起过桥。
请问,如何安排,能够在 17 分钟内这四个人都过桥?
答案:A & B -->2 mins
1 mins <-- A
C & D -->10 mins
2 mins <-- B
A & B --> 2 mins
一共 2 + 1 + 10 + 2 + 2 = 17 mins
1.2 1-20 的两个数把和告诉 A,积告诉 B,A 说不知道是多少,
B 也说不知道,这时 A 说我知道了,B 接着说我也知道了,问这两个数是多少?
答案:2 和 3
1.3 爸爸,妈妈,妹妹,小强,至少两个人同一生肖的概率是多少?
1-12*11*10*9/12*12*12*12 = 1-55/96 = 41/96
1.4 某人去玩具店买小熊,单价 30 元. 付给玩具店老板 100 元玩具店老板没零钱,
去水果店换了 100 元零钱回来找给那人 70 元. 那人走后, 水果店老板找到玩具店老板
说刚才的 100 元是假币,玩具店老板赔偿了水果店老板 100 元。
问:玩具店老板损失了多少钱?
答案: 70+小熊的进价
2 请定义一个宏,比较两个数 a、b 的大小,不能使用大于、小于、if 语句
答案:
#define max(a,b) ((((long)((a)-(b)))&0x80000000)?b:a)
若 a > b ,则 a-b 的二进制最高位为 0,与上任何数还是 0,所以大数为 a;
否则,a-b 为负数,二进制最高位为 1,与上 0x80000000(最高位为 1 其他为 0)之后
为 1,所以此时的大数为 b.
3 计算 a^b << 2
答案:运算符优先级:括号,下标,->和.(成员)最高:
单目的比双目的高;
算术双目的比其他双目的高;
位运算 高于 关系运算;
关系运算 高于 按位运算(与,或,异或);
按位运算 高于 逻辑运算;
三目的只有一个 条件运算,低于逻辑运算;
赋值运算仅比 , (顺序运算)高。
在此题中,位左移"<<" 优先级高于按位异或"^",所以 b 先左移两位(相当于乘以
4),
再与 a 异或。
例如: 当 a = 6; b = 4 时; 则 a^b<<2 = 22