#include <stdio.h>
#include <string.h>
int main()
{
int a,b,c,d,e,f,g,number,res;
scanf("%d",&number);
while(number){
res = 0;
for(a=0;a<=number/100;a++)
for(b=0;b<=number/50;b++)
for(c=0;c<=number/20;c++)
for(d=0;d<=number/10;d++)
for(e=0;e<=number/5;e++)
for(f=0;f<=number/2;f++)
{
if((a+b+c+d+e+f)>100)
break;
for(g=0;g<=number;g++)
{
if((a+b+c+d+e+f+g)>100)
break;
if((a*100+b*50+c*20+d*10+e*5+f*2+g)==number)
{
res++;
break;
}
}
}
printf("%d\n",res);
scanf("%d",&number);
}
return 0;
}
是一种正确的思路,暂且让其在此处做短暂的停歇吧
Description
我们知道人民币有1、2、5、10、20、50、100这几种面值。 现在给你 n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。 比如4元,能用4张1元、2张1元和1张2元、2张 2元,三种表示方法。
Input
输入有多组,每组一行,为一个整合n。 输入以0结束。
Output
输出该面额有几种表示方法。
Sample Input
1
4
0
Sample Output
1
3