Dollar Dayz
题目
有1-m个数,每个数不限量,问凑出n的方案数
思路
经典完全背包,不过要令写一个高精加法
AC代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<vector>
#include<queue>
#include<set>
#include<map>
#include<fstream>
#define inf 0x3f3f3f3f
#define ll long long
#define ull unsigned long long
#define endl '\n'
//#define int long long
using namespace std;
typedef pair<int,int> PII;
const int N =10 + 1e5, mod = 1e9 + 7;
int dp[N][110];
void add(int a,int b)
{
for(int i=0;i<100;i++)
{
dp[a][i] += dp[b][i];
dp[a][i+1] += dp[a][i]/10;
dp[a][i]%=10;
}
}
void solve()
{
int n,m;
cin>>m>>n;
dp[0][0] = 1;
for(int i=1;i<=n;i++)
for(int j=i ;j<=m;j++)
add(j,j-i);
int len =100;
while(len>0 && dp[m][len] == 0) len --;
for(int i=len;i>=0;i--)cout<<dp[m][i];
cout<<endl;
}
signed main()
{
ios::sync_with_stdio();cin.tie();cout.tie();
solve();
return 0;
}