a****l 发帖数: 8211 | 1 算法的原理很简单,输入x,输出y.x的范围(0-1000)的整数,y的范围是(0-1500)的整数,
将x线性的按比例关系转换成y,也就是y=1.5x,小数点后的舍入方法随便(就是说y=2.5的
话算2或者3都可以)
现在的关键是,x是一个16位的整数(unsigned int, 16bits),y也是一个16位的整数,要
求是计算过程中不能用到32位的运算,就是说不能把x,y转换成32位算好再转换回来,这
该怎么计算?有谁知道这个怎么办吗?显然,查表的方法也是不允许的(内存的占用必须是
固定的,不能随范围变化而变化)
另外的一个要求是,y的范围是可以变的,所以不能用固定的乘1.5的算法,y应该可以是任
何一个16位整数可表达的范围. | B***i 发帖数: 724 | | z*****n 发帖数: 7639 | 3 this is a good solution.
【在 B***i 的大作中提到】 : y = x + x >> 1 ?
|
|