7-152 百钱百鸡

分数 10

全屏浏览题目

切换布局

作者 usx程序设计类课程组

单位 绍兴文理学院

百鸡问题:“今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁母雏各几何。”

百鸡问题是北魏数学家张丘建在《张丘建算经》中提出的一个世界著名的不定方程问题,它给出了由三个未知量的两个方程组成的不定方程组的解。

自张丘建以后,中国数学家对百鸡问题的研究不断深入,百鸡问题也几乎成了不定方程的代名词,从宋代到清代围绕百鸡问题的数学研究取得了很好的成就。

《张丘建算经》约成书于公元466—485年间,共三卷93题,包括测量、纺织、交换、纳税、冶炼、土木工程、利息等各方面的计算问题。其体例为问答式,条理精密,文词古雅,是中国古代数学史上的杰作,也是世界数学资料库中的一份宝贵的遗产。后世学者北周甄鸾、唐李淳风相继为该书做了注释。特别是唐代,经太史令李淳风注释整理,收入《算经十书》,成为当时算学馆先生的必读书目。《张丘建算经》现传本有92问,比较突出的成就有最大公约数与最小公倍数的计算,各种等差数列问题的解决、某些不定方程问题求解等。

(以上文字摘自百度百科)

百钱百鸡问题的白话版:100元钱买100只鸡,公鸡5元1只,母鸡3元1只,小鸡1元3只。问公鸡、母鸡、小鸡各多少只(某种鸡可以为0只)?

百钱百鸡的结果如输出样例所示。

现在把100改为n,即n元钱买n只鸡,各种鸡价格不变,结果又如何呢?

输入格式:

测试数据有多组,处理到文件尾。每组测试输入一个整数n(100<=n<=1000)。

输出格式:

对于每组测试,按公鸡、母鸡、小鸡的数量(按公鸡数从小到大的顺序)逐行输出各种买法(每行数据之间空一个空格)。

输入样例:

100

输出样例:

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

 思路一:小鸡 3只一元 我们就让小鸡的个数 从3开始 并且每次增加的个数都是3的倍数 +=3;

但是结果会超时

#include<stdio.h>
int main(){
    
    int n=0;
    
    while(scanf("%d",&n)!=EOF){
        
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                for(int k=3;k<n;k=k+3){
                    if((i*5+3*j+k/3)==n && (i+j+k)==n)  //价钱 && 个数
                        printf("%d %d %d\n",i,j,k);
                }
            }
        }
    }
    return 0;
}

思路二:

#include <stdio.h>

int main() {
    int x, y, n = 0;
    while (scanf("%d", &n) != EOF) {
        for (x = 0; x <= n; x++) {
            for (y = 0; y <= n; y++) {
                //价格翻三倍 把小鸡拿出去
                if (x * 15 + y * 9 + (n - x - y) == 3 * n && (n - x - y) % 3 == 0) {
                    //两边同时翻三倍·                           小鸡的个数是否为3的倍数
                    printf("%d %d %d\n", x, y, (n - x - y));
                }
            }
        }
    }

    return 0;
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@pon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值