已知公鸡5元1只,母鸡3元1只,小鸡1元3只。现用n元钱买n只鸡,问总共有几种买法?各种买法的公鸡、母鸡、小鸡各多少只(某种鸡可以为0只)? 输入格式: 输入一个整数n(100<=n<=10000)。 输出格式: 先输出买法总数,再按公鸡、母鸡、小鸡的数量(按公鸡数从小到大的顺序)逐行输出各种买法(每行数据之间空一个空格)。 输入样例: 用C++写出代码
时间: 2024-03-05 08:47:31 浏览: 205
以下是用C++实现的代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
vector<vector<int>> res; //存放买法
for(int i = 0; i <= n / 5; i++) //枚举公鸡数量
{
for(int j = 0; j <= (n - 5 * i) / 3; j++) //枚举母鸡数量
{
int k = n - i - j; //小鸡数量
if(k % 3 == 0 && 5 * i + 3 * j + k / 3 == n && i + j + k == n) //判断是否符合条件
{
res.push_back({i, j, k}); //存储买法
}
}
}
sort(res.begin(), res.end()); //按公鸡数从小到大排序
cout << res.size() << endl; //输出买法总数
for(auto& nums : res) //输出各种买法
{
for(int i = 0; i < 3; i++)
{
cout << nums[i] << " ";
}
cout << endl;
}
return 0;
}
```
其中,使用两层循环枚举公鸡和母鸡的数量,然后计算出小鸡的数量。判断是否符合条件,如果符合条件,则存储这种买法。最后按公鸡数从小到大排序,并输出买法总数和各种买法即可。