在优酷的几道笔试题

14 篇文章 0 订阅

一、求一个三十二位整数的二进制数中一的个数
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方向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值