硬币分法
1分2分5分的硬币三种,组合成1元,共有多少种组合。
分析:1元=10角=100分。若只有一种情况则可分析为:
① 若只要1分合成1元,则需要100个1分;
②若只要2分合成1元,则需要50个2分;
③若只要5分合成1元,则需要20个5分。
但题目要求是三种,那么就是1分、2分、5分都至少也要一个。
代码如下:
/**
* <p>
* Description:[一块钱 1分 2分 5分 有多少种分法]
* </p>
*
* Created by [Administrator] [2019年3月15日]
* Midified by [修改人] [修改时间]
* @param args
*/
public static void main(String[] args) {
int i,j,k,s,n=0;/* i,j,k 分别代表 一分硬币、二分硬币和五分硬币*/
System.out.println("一块钱 1分 2分 5分组合,方法如下:");
for(i=1;i<100;i++) // 若全是1则需要100个1相加
for(j=1;j<50;j++) // 若全是2则需要50个2相加
for(k=1;k<20;k++) // 若全是5则需要20个5相加
{
s=1*i+j*2+k*5;
if (s==100) {
++n;
System.out.println("第"+n+"种组合:"+i+"个1分 + "+j+"个2分 + "+k+"个5分");
}
}
System.out.println("共有 "+n+" 种组合。");
}
c语言:
#include "stdio.h"
main()
{
int i,j,k,s,n=0; /* i,j,k 分别代表 一分硬币、二分硬币和五分硬币*/
printf("%5c%5c%5c\n",'1','2','5');
for(i=1;i<100;i++)
for(j=1;j<50;j++)
for(k=1;k<20;k++)
{
s=1*i+j*2+k*5;
if (s==100)
{
printf("%5d%5d%5d\n",i,j,k);
++n;
}
}
printf("The ways is %d\n",n);
}