Tencent筆試題
選擇題(60)
c/c++ os linux 方面的基礎(chǔ)知識,c的Sizeof函數(shù)有好幾個!
程序填空(40)
1.(20) 4空x5
不使用額外空間,將 A,B兩鏈表的元素交叉歸并
2.(20) 4空x5
MFC 將樹序列化 轉(zhuǎn)存在數(shù)組或 鏈表中!
1.請定義一個宏,比較兩個數(shù)a、b的大小,不能使用大于、小于、if語句
// 這樣轉(zhuǎn)向定義應(yīng)該不算違規(guī)吧!^_^
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
#define Cmp(x,y) compare(x,y)
int compare(int a,int b)
{
a^=(1<<31); b^=(1<<31);
int i=31;
while((i^-1) && !((a&(1<<i))^(b&(1<<i)))) i--;
return (i^-1)?(((a>>i)&1)?1:-1):0;
}
int _tmain()
{
int c;
c = Cmp(5,4);
cout<<c<<endl;
return 0;
}
2.如何輸出源文件的標題和目前執(zhí)行行的行數(shù)(不曉得怎么搞,在等兄弟給我答案在。
3.兩個數(shù)相乘,小數(shù)點后位數(shù)沒有限制,請寫一個高精度算法
算法提示:
//想法來自北師大一個同學(xué)給我看的另一個題目以及他的`java程序,
Tencent筆試題
,資料共享平臺
《Tencent筆試題》(http://www.oriental01.com)。輸入 string a, string b; 計算string c=a*b; 返回 c;
1)紀錄小數(shù)點在a,b中的位置l1,l2, 則需要小數(shù)點后移動位置數(shù)為l=length(a)+length(b)-l1-l2-2;
2)去掉a,b中的小數(shù)點,(a,b小數(shù)點后移,使a,b變?yōu)檎麛?shù))
3)計算c=a*b; (要么用java的BigInterger搞, 要么自己用C++寫高精度數(shù)乘法,超過百萬位,用FFT,我就不細說,這都預(yù)先寫過就別做了)
4)輸出c,(注意在輸出倒數(shù)第l個數(shù)時,輸出一個小數(shù)點。若是輸出的數(shù)少于l個,就補0)
4.寫一個病毒(沒搞過,^_^)
5.讓你在100000000個浮點數(shù)中找出最大的10000個,要求時間復(fù)雜度優(yōu)。
//本算法使用快排,O(n*lg(n))
//最低可以找到線性算法,使用預(yù)先區(qū)域統(tǒng)計劃分!類試于構(gòu)造Quad Trees! 寫起來代碼會長些
【Tencent筆試題】相關(guān)文章:
1.11.15 tencent后臺開發(fā) 筆經(jīng)
3.360筆試題目
4.360筆試題目