今天碰到一個問題,就是將一個 >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來實現的,才能保證實際的準確數據和準確統計,現實和系統實現多少都有些差別。。。 業務知識和開發技術都需要我們開發者去學習,是比較累,但感覺是,在業務知識的學習和熟悉中往往能帶給我們開發者很多有意思的創意,做出來的程序更能迎合客戶的應用,呵呵 工作了一夜,確實累,不停打哈欠中。。。
|