題解 埃及分數 C

2022-05-11 16:37:03 字數 954 閱讀 4728

description

在古埃及,人們使用單位分數的和(形如1/a的, a是自然數)表示一切有理數。

如:2/3=1/2+1/6,但不允許2/3=1/3+1/3,因為加數中有相同的。

對於乙個分數a/b,表示方法有很多種,但是哪種最好呢?

首先,加數少的比加數多的好,其次,加數個數相同的,最小的分數越大越好。

如:19/45=1/3 + 1/12 + 1/180

19/45=1/3 + 1/15 + 1/45

19/45=1/3 + 1/18 + 1/30,

19/45=1/4 + 1/6 + 1/180

19/45=1/5 + 1/6 + 1/18.

最好的是最後一種,因為1/18比1/180,1/45,1/30,1/180都大。

給出a,b(0〈a〈b〈1000),程式設計計算最好的表達方式。

input

一行包含a,b(0〈a〈b〈1000)。

output

每組測試資料若干個數,自小到大排列,依次是單位分數的分母。

sample input

19 45

sample output

5 6 18

這道題dfs引數傳的有點多,分別有dep(搜尋深度),mol(分子),den(分母),pre(上乙個分母),然後具體看**裡面,注意剪枝的情況,漏乙個就有可能tle。

#include#define ll long long

using namespace std;

int lim,ans;

bool flag;

int num[1010],tot[1010];

void dfs(ll dep,ll mol,ll den,ll pre)

}int main()

for(ll i=1;icout

}

埃及分數式

金字塔的故鄉埃及也是數學的發源地之一,古埃及數系中,記數常採用分子為1的分數,稱為 埃及分數 人們研究較多且頗感興趣的問題是 把給定整數或分數分解為埃及分數之和,分解與優化往往是乙個煩瑣艱辛的過程 例如對5 121,可以分解為 為了盡可能減少分解項數,1969年數學家布雷策在 數學遊覽 中給出了以下...

貪心 埃及分數

把乙個真分數表示為埃及分數之和的形式。所謂埃及分數,是指分子為1的分數。如7 8 1 2 1 3 1 24。乙個真分數a b,要尋找其最大的1 c,那麼很容易想到的方法是列舉。但是列舉法效率不高,所以這裡採用貪心演算法。a b肯定為 1的數字,那麼 c b a 既可以理解為b比a大多少倍,那麼顯然餘...

埃及分數(EgyptFraction)

思路 設b a c d b a c d a1 c 1 即 1 c 1 為a b所包含的最大真分數。設e c 1,由於a b 1 e a e b b e,則最大真分數減去最大埃及分數後得到 a e b b e,該真分數可能存在公因子,需要化簡,可以將分子分母同時除以 最大公約數 演算法 egyptfr...