Ultraviolet A 147-Dollars (DP)
Change coins. However, there is a score, so it is a decimal input. At first, wa was triggered due to precision problems. And .. Long is used for counting ..
#include #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define maxn 1005#define _ll __int64#define ll long long#define INF 0x3f3f3f3f#define Mod 1<<40+10#define pp pair
#define ull unsigned long longusing namespace std;int v[]={10000,5000,2000,1000,500,200,100,50,20,10,5};ll dp[30010];double n;void solve(){memset(dp,0,sizeof(dp));dp[0]=1;int m=(int)(n*100+0.5);for(int i=0;i<11;i++)for(int j=v[i];j<=m;j++)dp[j]+=dp[j-v[i]];printf(%6.2lf%17lld,n,dp[m]);}int main(){while(~scanf(%lf,&n)&&n)solve();return 0;}
Ultraviolet A 357: Click to open the link.
For the same change issue, paste a table.
#include #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define maxn 1005#define _ll __int64#define ll long long#define INF 0x3f3f3f3f#define Mod 1<<40+10#define pp pair
#define ull unsigned long longusing namespace std;int v[]={1,5,10,25,50};ll dp[30002];int n;void init(){memset(dp,0,sizeof(dp));dp[0]=1;for(int i=0;i<5;i++)for(int j=v[i];j<=30000;j++)dp[j]+=dp[j-v[i]];}int main(){init();while(~scanf(%d,&n)){if(dp[n]!=1)printf(There are %lld ways to produce %d cents change.,dp[n],n);elseprintf(There is only 1 way to produce %d cents change.,n);}return 0;}