您的位置:首页 > 其它

在优酷的几道笔试题

2007-07-03 19:57 246 查看
一、求一个三十二位整数的二进制数中一的个数
int count_ones(unsigned a)
{

    a = (a
& 0x55555555)
+ ((a
>> 1)
& 0x55555555);

    a = (a
& 0x33333333)
+ ((a
>> 2)
& 0x33333333);

    a = (a
& 0x0f0f0f0f)
+ ((a
>> 4)
& 0x0f0f0f0f);

    a = (a
& 0x00ff00ff)
+ ((a
>> 8)
& 0x00ff00ff);

    a = (a
& 0x0000ffff)
+ ((a
>> 16)
& 0x0000ffff);

    return a;
}


二、水仙花数
int a=n%10;

int b=n/10%10;

int c=n/100;

if(a*a*a+b*b*b+c*c*c==n)


三、点和面的关系
法向量是垂直屏幕的法线表示的向量

设平面法向量为{A,B,C},平面与法向量的交点为P0:(x0,y0,z0).

则平面上一点(x,y,z)与(x0,y0,z0)的向量必然与法线垂直。因此得出平面的点法式方程:

A(x-X0) + B(y-y0) + C(z-z0) = 0

将判断点坐标代入方程 满足条件 则点在平面上。

另:若方程坐标多项式>0,则在平面正面(法向量方向),反之在背面

注释:

两向量a * b  的长度为:

||a ||   *   ||b||    * sin(thta)   //thta为a与b的夹角

这样 A(x-X0) + B(y-y0) + C(z-z0) = 0  a,b垂直

     A(x-X0) + B(y-y0) + C(z-z0) > 0  a在b方向

     A(x-X0) + B(y-y0) + C(z-z0) < 0  a不在b方向
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c