/*
写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。
如:100个1是一个组合,5个1加19个5是一个组合。。。。 请用C++语言写。
*/
int x, y, z, cnt = 0; // 0 <= x <= 100; 0 <= y <= 50; 0 <= z <= 20;
/*笨法
for (z = 0; z <= 20; z++)
{
for (y = 0; y<= 50; y++)
{
for (x = 0; x <= 100; x++)
{
if (100 == x + 2*y + 5*z)
{
cnt++;
}
}
}
}
cout << cnt;
*/
//优秀算法:x+5*z为偶
int cnt = 0;
for (int x = 0; x < =100; x += 5)
{
cnt += (x + 2)/2;//偶数以内偶数个、奇数以内奇数个数 (x + 2)/2
}