輸入a、b, 求a/b 可以由多少個埃及分數組成。
埃及分數是形如1/a , a是自然數的分數。
如2/3 = 1/2 + 1/6, 但埃及分數中不允許有相同的 ,如不可以2/3 = 1/3 + 1/3.
求出可以表達a/b個數最少埃及分數方案, 如果個數相同則選取最小的分數最大。
#include #define ll long longusing
namespace
std;
intmaxd;
long
long v[1234],ans[1234
];bool better(int
d)
return
false
; }}//
求滿足 1/c <= a/b 最大的1/c, 即最小的c
inline int
get_first(ll a,ll b)
//當前深度為d, 分母不能小於from, 分數之和為aa, bb
bool dfs(int d, int
from
, ll aa, ll bb)
bool ok = false;
from = max(from, get_first(aa, bb)); //
如果上一次遞迴的from不符合aa/bb最小的分母, 則取get_first(aa,bb)
for(int i = from; ; i++)
return
ok;}
intmain()
}for(int i = 0; i <= maxd; i++) printf("
%lld
", ans[i]);
}
練習1 23 練習1 30
1.練習1.23 改後的 如下 define find divisor better n a cond square a n n divides?better n a a else find divisor better n next 2 a define next 2 n if 2 n 1 n 2...
裝箱問題 vijos
有乙個箱子容量為v 正整數,o v 20000 同時有n個物品 o n 30 每個物品有乙個體積 正整數 要求從 n 個物品中,任取若千個裝入箱內,使箱子的剩餘空間為最小。第一行,乙個整數,表示箱子容量 第二行,乙個整數,表示有n個物品 接下來n行,分別表示這n個物品的各自體積。乙個整數,表示箱子剩...
vijos 積木城堡
恰似今天更了七章 我該怎麼辦 看上去好像只能瘋狂寫揹包啦 他們說周四化學通練,我好慌 描述 第一行是乙個整數n n 100 表示一共有幾座城堡。以下n行每行是一系列非負整數,用乙個空格分隔,按從下往上的順序依次給出一座城堡中所有積木的稜長。用 1結束。一座城堡中的積木不超過100塊,每塊積木的稜長不...