其他
【校招编程08】求出用1,2,5这三个数……
原文
https://blog.csdn.net/hepfei90/article/details/13614529
题目:求出用1、2、5这三个数不同个数组合的和为100的组合数。
【方法一】基础编程
int CalcNum(void)
{
int number=0;
int x, y, z;
for (x = 0; x <= 100; x++)
{
for (y = 0; y <= 50; y++)
{
for (z=0; z <= 20; z++)
{
if ((x+2*y+5*z) == 100)
{
number++;
}
}
}
}
return number;
}
【方法二】高级编程
int CalcNum(void)
{
int number = 0;
int x, y, z;
for (x = 0; x <= 100; x++)
{
for (y = 0; y <= (100-x)/2; y++)
{
for (z = 0; z <= (100-x-2*y)/2; z++)
{
if ((x+2*y+5*z) == 100)
{
number++;
}
}
}
}
return number;
}
【方法三】数学编程
// 数学编程:x+2y+5z = 100 先控制z,然后控制y,最后看x的规律
// 控制了z,x作为填充,有多少个偶数就有多少种方案。
// 例如:
// z=0,x+2y=100-0*5=100,然后取y=0,一直到y=100/2 = 50 注意0-50共51种情况
// z=1,x+2y=100-1*5=95,然后取y=0,一直到y=95/2 = 47 注意0-47共48种情况
// z=2,x+2y=100-2*5=90,然后取y=0,一直到y=90/2 = 45 注意0-45共46种情况
// ……
// z=20,x+2y=100-20*5=0,然后取y=0,一直到y=0/2 = 0
int CalcNum(void)
{
int number=0;
int z;
for (z = 0; z <= 20; z++)
{
number += (100-5*z)/2+1;
}
return number;
}
往期精彩推荐
后台回复:C101,获取【入门C语言最好的书籍】
后台回复:C000,获取【热门C语言电子书】
后台回复:CV000,获取【热门C语言视频教程】
后台回复:py001,获取【编程小白的第一本python入门书】
关注公众号获取更多资源分享!