#include <iostream>
#include <vector>
#include <cstdint>
#include <tuple>
#include <algorithm>
typedef std::vector<std::uint64_t> DType;
typedef std::vector<std::tuple<std::uint64_t, std::uint64_t, std::uint64_t, std::uint64_t> > RType;
RType MakeHoge(DType D, std::uint64_t Ans) {
RType R;
std::sort(D.begin(), D.end());
do {
if ((D[0] + D[1]) * (D[2] + D[3]) == Ans) {
R.push_back({ D[0],D[1],D[2],D[3] });
}
} while (std::next_permutation(D.begin(), D.end()));
std::sort(R.begin(), R.end());
R.erase(std::unique(R.begin(), R.end()), R.end());
return R;
}
bool Show(const RType& R) {
std::cout <<"Count:"<< R.size() << std::endl;
for (auto& o : R) {
std::cout << "(" << std::get<0>(o) << "+" << std::get<1>(o) << ")*(" << std::get<2>(o) << "+" << std::get<3>(o) << ")" << std::endl;
}
return 0;
}
int main() {
DType D = { 1,2,3,4,5,6,7,8,9,10 };
std::uint64_t A = 100;
auto R = MakeHoge(D, A);
Show(R);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y3N0ZGludD4KI2luY2x1ZGUgPHR1cGxlPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdHlwZWRlZiBzdGQ6OnZlY3RvcjxzdGQ6OnVpbnQ2NF90PiBEVHlwZTsKdHlwZWRlZiBzdGQ6OnZlY3RvcjxzdGQ6OnR1cGxlPHN0ZDo6dWludDY0X3QsIHN0ZDo6dWludDY0X3QsIHN0ZDo6dWludDY0X3QsIHN0ZDo6dWludDY0X3Q+ID4gUlR5cGU7CgpSVHlwZSBNYWtlSG9nZShEVHlwZSBELCBzdGQ6OnVpbnQ2NF90IEFucykgewoKCVJUeXBlIFI7CglzdGQ6OnNvcnQoRC5iZWdpbigpLCBELmVuZCgpKTsKCWRvIHsKCgkJaWYgKChEWzBdICsgRFsxXSkgKiAoRFsyXSArIERbM10pID09IEFucykgewoJCQlSLnB1c2hfYmFjayh7IERbMF0sRFsxXSxEWzJdLERbM10gfSk7CgkJfQoKCgl9IHdoaWxlIChzdGQ6Om5leHRfcGVybXV0YXRpb24oRC5iZWdpbigpLCBELmVuZCgpKSk7CgoJc3RkOjpzb3J0KFIuYmVnaW4oKSwgUi5lbmQoKSk7CglSLmVyYXNlKHN0ZDo6dW5pcXVlKFIuYmVnaW4oKSwgUi5lbmQoKSksIFIuZW5kKCkpOwoKCXJldHVybiBSOwp9Cgpib29sIFNob3coY29uc3QgUlR5cGUmIFIpIHsKCXN0ZDo6Y291dCA8PCJDb3VudDoiPDwgUi5zaXplKCkgPDwgc3RkOjplbmRsOwoJZm9yIChhdXRvJiBvIDogUikgewoJCXN0ZDo6Y291dCA8PCAiKCIgPDwgc3RkOjpnZXQ8MD4obykgPDwgIisiIDw8IHN0ZDo6Z2V0PDE+KG8pIDw8ICIpKigiIDw8IHN0ZDo6Z2V0PDI+KG8pIDw8ICIrIiA8PCBzdGQ6OmdldDwzPihvKSA8PCAiKSIgPDwgc3RkOjplbmRsOwoJfQoJcmV0dXJuIDA7Cn0KCmludCBtYWluKCkgewoKCURUeXBlIEQgPSB7IDEsMiwzLDQsNSw2LDcsOCw5LDEwIH07CglzdGQ6OnVpbnQ2NF90IEEgPSAxMDA7CgoJYXV0byBSID0gTWFrZUhvZ2UoRCwgQSk7CgoJU2hvdyhSKTsKCglyZXR1cm4gMDsKfQo=