《九章算術》屬於算經十書中的一部,是中國古典數學專著。這些經典數學專著中,有許多眾所周知的問題。現在是計算機無所不在的時代,那些問題與其用數學方法來解,不如用電腦程式來解。這個時代是計算解決問題的時代。
《九章算術》卷第二 粟公尺的四十五題和四十六題如下:
〔四五〕今有出錢六百二十,買羽二千一百翭。欲其貴賤率之,問各幾何?答曰:其一千一百四十翭,三翭一錢。其九百六十翭,四翭一錢。
〔四六〕今有出錢九百八十,買矢簳五千八百二十枚。欲其貴賤率之,問各幾何?答曰:其三百枚,五枚一錢。其五千五百二十枚,六枚一錢。
仔細閱讀可以知道,這兩個問題幾乎是同一型別的,可以用同乙個程式來解。
這兩個問題,已知的是錢多少,買了多少東西。所買的東西分貴和賤兩種,需要求的是貴和賤的東西各買了多少,其**各為多少。給2個數,需要求4個數。另外一點,需要假設古代的錢是比較值錢的,1錢可以買多個物品。再一點是,經過試算,錢如果太值錢則可行解就太多了,於是假定1錢最多買10個物品。
窮舉法在這個問題中是非常適用的。貴的物品所用錢數從1錢(迴圈變數i)開始試算,那麼賤的物品所用錢數=所有錢數-貴的物品錢數。貴的物品**從1開始試到10(迴圈變數j),賤的物品**從j+1開始試到10(迴圈變數k),滿足j
程式如下:
/*
* 今有出錢六百二十,買羽二千一百翭。欲其貴賤率之,問各幾何?答曰:其一千一百四十翭,三翭一錢。其九百六十翭,四翭一錢。
* * 今有出錢九百八十,買矢簳五千八百二十枚。欲其貴賤率之,問各幾何?答曰:其三百枚,五枚一錢。其五千五百二十枚,六枚一錢。
* * 這兩個問題出自《九章算術》卷第二粟公尺的四十五題和四十六題。
*/#include #define max_price 10
int main(void)}}
}return 0;
}
輸入兩組資料,一是620和2100,二是980和5820,程式執行結果如下:
620 2100
380 2 1720 4 380+1720=2100 380/2+1720/4=620
250 1 1850 5 250+1850=2100 250/1+1850/5=620
324 1 1776 6 324+1776=2100 324/1+1776/6=620
1140 3 960 4 1140+960=2100 1140/3+960/4=620
810 2 1290 6 810+1290=2100 810/2+1290/6=620
435 1 1665 9 435+1665=2100 435/1+1665/9=620
896 2 1204 7 896+1204=2100 896/2+1204/7=620
1500 3 600 5 1500+600=2100 1500/3+600/5=620
1620 3 480 6 1620+480=2100 1620/3+480/6=620
1680 3 420 7 1680+420=2100 1680/3+420/7=620
1716 3 384 8 1716+384=2100 1716/3+384/8=620
1740 3 360 9 1740+360=2100 1740/3+360/9=620
980 5820
12 1 5808 6 12+5808=5820 12/1+5808/6=980
30 2 5790 6 30+5790=5820 30/2+5790/6=980
60 3 5760 6 60+5760=5820 60/3+5760/6=980
120 4 5700 6 120+5700=5820 120/4+5700/6=980
300 5 5520 6 300+5520=5820 300/5+5520/6=980
416 2 5404 7 416+5404=5820 416/2+5404/7=980
780 3 5040 7 780+5040=5820 780/3+5040/7=980
375 1 5445 9 375+5445=5820 375/1+5445/9=980
1212 3 4608 8 1212+4608=5820 1212/3+4608/8=980
1500 3 4320 9 1500+4320=5820 1500/3+4320/9=980
2020 4 3800 8 2020+3800=5820 2020/4+3800/8=980
2600 5 3220 7 2600+3220=5820 2600/5+3220/7=980
2400 4 3420 9 2400+3420=5820 2400/4+3420/9=980
3750 5 2070 9 3750+2070=5820 3750/5+2070/9=980
3980 5 1840 10 3980+1840=5820 3980/5+1840/10=980
《九章算術》卷第二 粟公尺的四十五題和四十六題給出的解也在上述結果中。
然而,程式計算出的可行解遠多於1個,這是假定1錢最多買10個物品條件下得到的結果。
hihoCoder 1481 出勤記錄I
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 小hi的演算法課老師每次上課都會統計小hi的出勤記錄。遲到會被記錄乙個l,缺席會被記錄乙個a,按時上課會被記錄乙個o。一學期結束,小hi的出勤記錄可以看成是乙個只包含lao的字串,例如 oooolooolallo 如果小hi整...
長城汽車王者之風盡顯,「I紀元」動力總成出盡風頭
近幾年的長城汽車可謂是風光無限,除了成長為銷量百萬的巨型車企之外,其自主研發能力也得到了國內外使用者的一致認可,堅持的 過度投入 方略初見成效。尤其是旗下的 i紀元 幾款動力總成佔據了銷量的半壁江山,讓長城汽車的王者之風盡顯。除之此外長城 i紀元 動力總成技術其他產品市場表現也同樣更為不凡,並逐步向...