今天在CSDN上看了一个帖子,回贴人是如此之多,引起了我的兴趣,把这个整理了一下,对自己也是提高。
http://community.csdn.net/Expert/topic/5304/5304123.xml?temp=.6896479
解决方法基本上有四种,分别是用除法、乘法,查表和位操作来实现。但位操作的我试了一下没有成功的。 找了几个比较好的,总结一下。
除法:
这也不算完整的除法,


































明眼人一看就知道算法缺点了,完全是通常思路,没有新意。
查表的:








































制表有时间和空间开销,显然也不是最好的。
再看看用乘法的














这已经接近提问者的目标了,但缺点却出在使用了递归上,在层次比较多的时候,递归还是很要命的,幸亏是3的幂,用不了几次递归。
总结了一下,自己写了一个



















其实这题目并没有什么难人之处,关键是打破常规,好多人都用MOD用习惯了,而此题目如果用取余来看,判断的情况就相当的多,也相当复杂,反其道而用之,用乘法,用简洁多了,这未必对自己不是一个警视。