已知和与几个不同的加数,求这几个加数的个数

已知总和是51242,加数分别是188 98 180 258 99求这几个加数的个数分别是多少

这题没有唯一答案,任意取一个数,用它减去这个数,让后继续,直到符合要求

暴力解法

#include <iostream>

using namespace std;

int main()
{
    int sum = 51242, a[5] = {188, 98, 180, 258, 99}, i[5];
    for (i[0] = 1; i[0] < sum / a[0]; i[0]++)
    {
        for (i[1] = 1; i[1] <= sum / a[1]; i[1]++)
        {
            for (i[2] = 1; i[2] < sum / a[2]; i[2]++)
            {
                for (i[3] = 1; i[3] < sum / a[3]; i[3]++)
                {
                    for (i[4] = 1; i[4] < sum / a[4]; i[4]++)
                    {
                        if (a[0] * i[0] + a[1] * i[1] + a[2] * i[2] + a[3] * i[3] + a[4] * i[4] == sum)
                            cout << i[0] << ' ' << i[1] << ' ' << i[2] << ' ' << i[3] << ' ' << i[4] << endl;
                    }
                }
            }
        }
    }
    return 0;
}