#include "stdafx.h"
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
for(int i=1;i<7;i++)
for(int j=1;j<24;j++)
for(int k=1;k<50;k++)
for(int n=1;n<100;n++)
{
if(i*10+j*5+k*2+n-100) continue;
if(i+j+k+n-40) continue;
cout<
}
return 0;
}
其实是个40张求和为100的问题,首先有4张票子是固定的了,共计18元。剩余82元和36张进行分配。即10x+5y+2z+w = 82,x+y+z+w = 36,x,y,z,w ∈Z的解方程题。
提示到此为止。请加油
简单办法正整数遍历,xyzw进行各级嵌套进行36^4时间复杂度的运算可以求出所有解,对电脑也是一瞬间的东西。
正规做法是使用不定方程的解法,详细请见参考资料。