1074: 百钱买百鸡

该篇博客介绍了经典的百钱买百鸡问题的程序解决思路。通过C++代码展示了如何利用循环和条件判断找出所有可能的组合,以购买100只鸡(公鸡、母鸡、小鸡)并恰好花费100文钱。程序使用了链表数据结构存储结果,并按照特定规则排序输出。
摘要由CSDN通过智能技术生成

题目描述

百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只? 
本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、小鸡各买多少只?

输入

输入一个正整数n(n<=100)。

输出

如果有解,种组合占一行,包含公鸡、母鸡、小鸡的个数,用正整数表示,每个数据占4列。公鸡母鸡小鸡个数均大于等于0,按公鸡数目从小到大输出,公鸡数目相同按母鸡数目从小到大输出,以此类推。如果无解,输出“No Answer”。

样例输入 Copy

100

样例输出 Copy

   0  25  75
   4  18  78
   8  11  81
  12   4  84

源码:(写个方程式就行)

#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
struct chiken
{
    int Rooster;
    int hens;
    int child;
    chiken* next;
};

int main() {
    int n;
    cin >> n;
    chiken* head;
    chiken* p;
    chiken* t;
    p = new chiken();
    head = p;
    t = p;
    for (int i = 0;i <= n;i++) {
        if ((n - (7 * i)) % 4 == 0 &&(n-(7*i))>=0) {
            p = new chiken();
            p->Rooster = i;
            p->hens = (n - 7 * i) / 4;
            p->child = n - p->hens - p->Rooster;
            t->next = p;
            t = t->next;
        }
    } 
    head = head->next;
    if (head == nullptr) {
        cout << "No Answer";
    }
    else
    {
        while (head != nullptr) {
            cout << setiosflags(ios::right);
            cout << setw(4) << head->Rooster << setw(4) << head->hens << setw(4) << head->child << endl;
            head = head->next;
        }
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值