Description
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100000;
int k[N], dp[N];
int main()
{
int v[]={1,5,10,25,50};
int n;
while(scanf("%d", &n)!=EOF)
{
if(n==1)
{
printf("1\n");
continue;
}
memset(dp,0,sizeof(dp));
for(int i=0;i<=n;i++) k[i]=1;
for(int i=0;i<5;i++)
{
for(int j=v[i];j<=n;j++)
{
if(dp[j]<dp[j-v[i]]+v[i]) k[j]=k[j-v[i]];
else if(dp[j]==dp[j-v[i]]+v[i]) k[j]+=k[j-v[i]];
dp[j]=max(dp[j],dp[j-v[i]]+v[i]);
}
}
printf("%d\n",k[n]);
}
return 0;
}