diff --git a/TangDou/AcWing/BeiBao/532.md b/TangDou/AcWing/BeiBao/532.md
index 9568e13..219e9fc 100644
--- a/TangDou/AcWing/BeiBao/532.md
+++ b/TangDou/AcWing/BeiBao/532.md
@@ -53,9 +53,9 @@ $1≤n≤100,1≤a[i]≤25000,1≤T≤20$
大写的 简化 !明显在提示我们可以只简化,不用考虑替换成其它的货币金额啊!如果只是简化,那么简单:
-* 将货币面额排序(因为给的面额是无序的)
+* ① 将货币面额排序(因为给的面额是无序的)
-* 每一个面额考查它能不能被它之前的面额描述出来,如果能,它就没有存在的必要。将这类的货币从系统中去除就可以得到等价的最小数量货币系统。
+* ② 每一个面额考查它能不能被它之前的面额描述出来,如果能,它就没有存在的必要。将这类的货币从系统中去除就可以得到等价的最小数量货币系统。
可以用$dp$求出能表示该面额的方案数,若对于一张货币方案数唯一(即只能被自己表示),则这张货币不能被省略,反之可以被省略,最后统计一下就行了。
diff --git a/TangDou/AcWing/BeiBao/背包问题专题.md b/TangDou/AcWing/BeiBao/背包问题专题.md
index e29fa9a..4f77ef3 100644
--- a/TangDou/AcWing/BeiBao/背包问题专题.md
+++ b/TangDou/AcWing/BeiBao/背包问题专题.md
@@ -278,4 +278,31 @@ int main() {
**[$AcWing$ $1021$. 货币系统 ](https://www.acwing.com/problem/content/1023/)**
-完全背包之恰好装满,只不过$int$装不下,需要开$long$ $long$,捎带着学习一下隔板法,应对一下高中数学组合数学。
\ No newline at end of file
+完全背包之恰好装满,只不过$int$装不下,需要开$long$ $long$,捎带着学习一下隔板法,应对一下高中数学组合数学。
+
+**十年$OI$一场空,不开$long$ $long$见祖宗。**
+
+```cpp {.line-numbers}
+#include
+
+using namespace std;
+typedef long long LL;
+
+const int N = 20;
+const int M = 3010;
+int n, m;
+LL v[N];
+LL f[M];
+
+int main() {
+ cin >> n >> m;
+ f[0] = 1;
+ for (int i = 1; i <= n; i++) {
+ cin >> v[i];
+ for (int j = v[i]; j <= m; j++)
+ f[j] += f[j - v[i]];
+ }
+ printf("%lld\n", f[m]);
+ return 0;
+}
+```
\ No newline at end of file