运用c语言解决支付方法:取1元、2元和5元纸币共10张,凑整18元,共有几种方法?(用n表示)
#include <stdlib.h>
int main()
{
int n = 0;
for (int y = 0; y <= 10; y++)
for (int e = 0; e <= 10 - y; e++)
{
int w = 10 - y - e;
if (y + e * 2 + w * 5 == 18)
{
printf("%d %d %d\n", y, e, w);
n++;
}
}
printf("%d种", n);
return 0;
}
2 8 0
5 4 1
8 0 2
3种
主要思路:先将三种鸡的个数设出来,利用多层循环满足鸡个数和为100,价格总和也为100,则条件成立将鸡的个数输出。
/***************百钱百鸡问题********************
* 用100元钱卖100只鸡,公鸡每只5元,母鸡每只3元,
小鸡每3只1元,要求每种鸡至少买一只。
试编程求各种鸡各买多少只
*************************************************/
void main ()
{
int x,y,z;//分别带代表公鸡、母鸡和小鸡
for(x=1;x<=19;x++)//公鸡最多19只(还有小鸡和母鸡)
for(y=1;y<=31;y++)//母鸡最多31只
{
z=100-x-y;
if(5*x+3*y+z/3==100&&z%3==0)//小鸡个数要是3的倍数,防止钱有剩余
printf("公鸡有%d只,母鸡有%d只,小鸡有%d只;\n",x,y,z);
}
}