hdu1284

来源:互联网 发布:淘宝秋季休闲鞋女鞋 编辑:程序博客网 时间:2024/06/11 19:33
Problem Description
在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
 

Input
每行只有一个正整数N,N小于32768。
 

Output
对应每个输入,输出兑换方法数。
 

Sample Input
293412553
 

Sample Output
71883113137761
 
-----------------------------------------------------------------------
每种钱币是无限的
 
#include<stdio.h>#include<string.h>int main(){ int c1[50000],c2[50000]; int n,i,j,k,m; n = 32769; memset(c1,0,sizeof(c1)); memset(c2,0,sizeof(c2)); for(i=0;i<=n;i++)  c1[i] = 1; for(i=2;i<=3;i++) {  for(j=0;j<=n;j++)  {   for(k=0;k+j<=n;k+=i)    c2[j+k] += c1[j];  }  for(j=0;j<=n;j++)  {   c1[j] = c2[j];   c2[j] = 0;  } } while(scanf("%d",&m)!=EOF) {  printf("%d\n",c1[m]); } return 0;}
0 0