Polycarpus有一条丝带,其长度为N。他希望以满足以下两个条件的方式切割丝带:
切割后,每个带状件的长度应为A、B或C。
切割后,带状件的数量应最大。
帮助Polycarpus找到所需切割后的带状件数量。
输入
第一行包含四个空格分隔的整数n、a、b和c(1≤n、a、b、c≤4000)-原始色带的长度和切割后色带片的可接受长度。数字A、B和C可以重合。
输出
打印一个数字-最大可能的丝带条数。保证至少存在一个正确的色带切割。
Examples
Input
5 5 3 2
Output
2
Input
7 5 5 2
Output
2
解法一(暴力):
#include<iostream>
using namespace std;
int main()
{
int n,a,b,c,ans=0;
cin>>n>>a>>b>>c;
for(int i=0;a*i<=n;i++)
{
for(int j=0;a*i+b*j<=n;j++)
{
if((n-a*i-b*j)%c==0)
ans=max(ans,(n-a*i-b*j)/c+i