题目描述
FJ 到商场买工具。商场里有 K 种工具(≤K≤100),价格分别为 1,2,…,K 元。FJ 手里有 N 元(1≤N≤1000),必须花完。他有多少种购买方案呢?
输入格式
一行两个整数 N,K。
输出格式
输出不同的购买方案数。
输入输出样例
输入 #1复制
5 3
输出 #1复制
5
我们令f[j]来表示我们选择到第j元钱的方案数
那么我们枚举一个i表示我们当前选了j−i元钱的东西,然后又选了这么一个价值为i的物品
那么我们肯定要保证i<j吧?
i=1∑kj=i∑nf[j]+=f[j−i];
为什么这里的是f[j]+=f[j−i]呢?
我们可以发现,当f[j−i]转移到 f[j]的时候, f[j−i]已经有了一些情况(显而易见(因为在枚举 f[j]之前,必定先枚举的 f[j−i],那么在转移的时候就不会出现像 f[j]转移了, f[j−i]没转移的情况
但是我们又发现,这肯定是炸 long long的
所以用了个小技巧 ---- 高精度
//用__i