兄弟今天上午去Microsoft笔试,BT题目阿,高人求解!

microeonson 2004-12-02 12:49:34
MAC ADDRESS:0A003EF0F9B5
FeatureKey1=C9FDD6B263F92000
FeatureKey2=2FF36A63F73D0000

MAC ADDRESS:0A003EF0F465
FeatureKey1=8A9D4BDFB7152000
FeatureKey2=CFD4C402EB3C0000

已知特征码1、2是根据MAC地址计算出,试求算法。
提示:1.MAC地址的前6位相同,并且可能在计算特征码的时候根本不用。
2.上面两组特征码根据其上面的MAC地址算出。

...全文
5857 111 打赏 收藏 转发到动态 举报
写回复
用AI写文章
111 条回复
切换为时间正序
请发表友善的回复…
发表回复
carsonhealy 2005-07-06
  • 打赏
  • 举报
回复
哈哈,只是路过!
cscyk 2005-06-16
  • 打赏
  • 举报
回复
Study
勉励前行 2005-06-16
  • 打赏
  • 举报
回复
下面這個推理正確嗎?
本題有无穷多组解
可我卻一種解都不會,那我所會的是:連無窮分之一到不到,真無知啊

(注意:數學上無窮分之一 等於 無窮)
heguosheng 2005-06-14
  • 打赏
  • 举报
回复
靠,最让我晕的题目
daikaiming 2005-06-14
  • 打赏
  • 举报
回复
啊,真的是人多力量大。

咯种咯样的看法都有啊。
njqibin 2005-06-14
  • 打赏
  • 举报
回复
如果用的是md5之类的,如果仅仅两个值就能找到规律,那么只能说这个算法太失败。

所以不算。直接下一题。
gushenghua 2005-06-13
  • 打赏
  • 举报
回复
有无穷多组解
勉励前行 2005-06-12
  • 打赏
  • 举报
回复
再提出編碼方案,希望有人給最小計算量的答案:
//1、編碼過程,按字節編碼(避免128位整數運算,且要防止溢出)
char aMAC[8] = { '0x0A','0x00','0x3E','0xF0','0xF9','0xB5' };
char aFeatureKey1[8] = {'0xC9','0xFD','0xD6','0xB2','0x63','0xF9','0x20','0x00'};
char aFeatureKey2[8] = {'0x2F','0xF3','0x6A','0x63','0xF7','0x3D','0x00','0x00'};

char bMAC = {'0x0A','0x00','0x3E','0xF0','0xF4','0x65'};
char bFeatureKey1[8] = {'0x8A','0x9D','0x4B'',0xDF','0xB7','0x15','0x20','0x00' };
char bFeatureKey2[8] = {'0xCF','0xD4','0xC4','0x02','0xEB','0x3C','0x00','0x00' };

long double amac = *(double *)aMac ;
long double akey1 = *(double *)aFeatureKey1;
long double akey2 = *(double *)aFeatureKey2;
long double bmac = *(double *)bMac ;
long double bkey1 = *(double *)bFeatureKey1;
long double bkey2 = *(double *)bFeatureKey2;
//解碼過程與此相反,不寫了,但要判斷結果是否溢出
//(注:double 8bytes , long double 10bytes)
則結果方程式: ax*x+bx+c = 0

1、設mac為二次項a
amac*akey1*akey1 + b*akey1 + c = 0 ;
bmac*bkey1*bkey1 + b*bkey1 + c = 0 ;
b = -(amac*akey1*akey1 - bmac*bkey1*bkey1)/(akey1-bkey1) ;
c = -(amac*akey1*akey1 + b*akey1) ;
2、設mac為一次項b , 同理解出:a, c
3、設mac為常數項c , 同理解出:a, b
4、檢查計算過程有無溢出,即 amac*akey1*akey1有無超出long double
  所能表達的范圍,如果超出,
  則按提示1:“1.MAC地址的前6位相同,并且可能在计算特征码的时候根本不用。”
  減少MAC編碼長度,以防止溢出,如果還是溢出,則本編碼方案失敗。注意到key中的後幾位數均為0 ,如舉出,可以倒排編碼,這樣數據規模就小了。
5、檢查上術三組解有無溢出,即超出double所能表達的范圍。取不溢出者作為解。

不知道采用整數的編碼方案會怎麼樣。這個用浮點數編碼的方案中,有效數字不足8字節,但通過這個編碼過程卻表示8字節有效數字,計算中將會被截尾,即精度不夠,但可以得出近似的結果。
wwwtony110 2005-06-11
  • 打赏
  • 举报
回复
无奈。。。
勉励前行 2005-06-09
  • 打赏
  • 举报
回复
MAC ADDRESS:0A003EF0F9B5
FeatureKey1=C9FDD6B263F92000
FeatureKey2=2FF36A63F73D0000

MAC ADDRESS:0A003EF0F465
FeatureKey1=8A9D4BDFB7152000
FeatureKey2=CFD4C402EB3C0000

對應:一個MAC有兩個解,則我們知道一個方程式有兩個解的情況是二次方程式:aX^2+bX+c = 0 ;
其解:X1 = .... X2 = ... 這個就不寫了。假設解是一個二次方程式,
則規劃求解方案:
X1,X2為已知數,
1、設二次項a為已知數 = MAC ,此時求解 b c ;
方程組:a,x1,x2, A , y1,y2 為已知
ax1^2+bx1+c = 0 ;
ax2^2+bx2+c = 0 ;
Ay1^2+by1+c = 0 ;
Ay2^2+by2+c = 0 ;
求解:b c ; //就算是遍歷算法好了,兩個未知數,這個方程組的充分條件滿足解了吧。
2、設已知數為一次項:b,同上列出方程式求解。
3、設已知數為常數項:c,同上列出方程式求解。

主要是要解出來的結果要滿足是一個整數就最好。還有求解過程不能出現溢出。
這樣:0A003EF0F9B5這樣的MAC地址要解析成什麼數:long or unsigned long or other ? 取多少位?
結果:又如何解析?是long or unsigned long or other ?
0x2FF36A63F73D0000 這個數有多大,得想一想如何做了?
有一種方式:將0x2FF36A63F73D0000看成是0x2FF36A63 + 0xF73D0000 這樣數據規模就小了,但方程式就變了。

期望有人給出最好的二次方程式。
dengtl 2005-06-09
  • 打赏
  • 举报
回复
学习
foochow 2005-06-05
  • 打赏
  • 举报
回复
不会,学习-_-
xj62486098 2005-06-05
  • 打赏
  • 举报
回复
路过
killer1984 2005-06-05
  • 打赏
  • 举报
回复
这个算法显然是线性的,才能由两组结果得出算法。
所以俺们应该找一个算法能对两个特征码进行线性运算得到MAC,并且,我们能使用该算法的逆算法唯一地得到特征码,这个逆算法就是所求。
真的有点难哎。。。
几个数的二进制转换,可能有帮助:

0A003E
0000 1010 0000 0000 0011 1110

F0F9B5
1111 0000 1111 1001 1011 0101
C9FDD6B263F92000
1100 1001 1111 1101 1101 0110 1011 0010 0110 0011 1111 1001 0010 0000 0000 0000
2FF36A63F73D0000
0010 1111 1111 0011 0110 1010 0110 0011 1111 0111 0011 1101 0000 0000 0000 0000

F0F465
1111 0000 1111 0100 0110 0101
8A9D4BDFB7152000
1000 1010 1001 1101 0100 1011 1101 1111 1011 0111 0001 0101 0010 0000 0000 0000
CFD4C402EB3C0000
1100 1111 1101 0100 1100 0100 0000 0010 1110 1011 0011 1100 0000 0000 0000 0000

晕了,到此为止,明天继续。
killer1984 2005-06-05
  • 打赏
  • 举报
回复
两个特征码的md5串,完全没有关系。。。。

53d6f212c3143279a2e82ca6a1ad84e8
237c974cc035627f00fb62a1fab03804
killer1984 2005-06-05
  • 打赏
  • 举报
回复
我倒是很想知道如果sunsol是对的,俺们到底应该怎么通过MAC得到特征码。。。
Cassati 2005-06-05
  • 打赏
  • 举报
回复
雾水中……
herman~~ 2005-06-05
  • 打赏
  • 举报
回复
学习
andaxuesheng 2005-05-04
  • 打赏
  • 举报
回复
看不懂!
顶ING !
andy_linky 2005-05-04
  • 打赏
  • 举报
回复
这样啊......
加载更多回复(91)

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧