零錢問題。我直接把0~300.00想成0~30000元去算,唯一要稍微注意的是小數在乘的時候會有誤差。
程式碼:
#include <stdio.h> #define N 30000 long long int s[N+1]={0}; int C[11]={5,10,20,50,100,200,500,1000,2000,5000,10000}; int main() { double n; s[0]=1; for(int i=0;i<11;i++) { for(int j=C[i];j<=N;j++) s[j]+=s[j-C[i]]; } while(scanf("%lf",&n)&&n) { n+=1e-6; printf("%6.2lf",n); printf("%17lld\n",s[(int)(n*100)]); } return 0; }
沒有留言:
張貼留言