今天碰到一个问题,就是将一个 >10 且 <100的数字的个位和十位对调,首先想到并采用的方法是,分解出两个数字对调并加起来:
/* ab 是源数, ba 是结果数 */
解:ba = ( ab - (ab/10) ) * 10 + (ab/10)
突然有个很古怪的想法,用减法可不可以呢?观察后,发觉源数和结果数两个相加后,得出个回环数。。。那么用减法同样可以实现。。。
如:求35对调后的数
53 = (5+3)*10 + (5+3) - 35
= 88 -35
如:求47对调后的数
74 = (7+4)*10 + (7+4) - 47
= 121 -47
...
...
至此,总结出一条公式:
ba = ( (ab/10) + (ab-(ab/10)*10) ) * 10 + ( (ab/10) + (ab-(ab/10)*10) ) - ab
当然,该公式只能在计算机上用,在数学上是不成立的。。。
虽然是麻烦点,不过总算是一种新的逆向方法,目前还没发现有任何实用价值,当作是开发过程中的一个创意罢,呵呵,也许这种思想将来有一天在某些情况下适用吧。。。
这使我联想到企业进销存系统中,实际运作思维和我们软件开发者的思维有很多是相反的,例
A、一般软件开发者思维求销售额:把每一笔已产生的销量乘以销价得出销售额,进而计算出毛利率
B、而实际运作思维求销售额:把每一笔销量乘以成本单价再除以(1-预定毛利率),得出销售额
可以看出,A方法虽然最准确,但是有很大缺陷,就是没有预见性和决策性;而B方法则不同,虽然在最后结算会有点点误差,但能提供很大的可预见性和决策性,可以很方便算出未来的销售额。其实,在实际中,方法A是完全错误的,因为开发者把毛利率和销价的关系弄反了,商品的毛利率不是由销价来决定,而是销价由毛利率来决定。商品销售价格是怎么制定的,商家要怎么样才能得出某商品的销售价格呢?可不是胡乱制定哦,通常采用的方法是:销售价格 = 商品的成本单价 / (1 - 欲达到的毛利率),同样的,销售额 = 商品的成本 / (1 - 欲达到的毛利率),因为对于商家来说,某商品要达到怎么样的毛利率是已知的。
想起当初刚接触这个B方法时,恍然大悟的感觉,不禁慨叹确实是很酷的一种方法。。。当然了,数据库系统还是得用方法A来实现的,才能保证实际的准确数据和准确统计,现实和系统实现多少都有些差别。。。
业务知识和开发技术都需要我们开发者去学习,是比较累,但感觉是,在业务知识的学习和熟悉中往往能带给我们开发者很多有意思的创意,做出来的程序更能迎合客户的应�