第十二课 鸡兔同笼

上次作业

作业题1

蜗牛沿着树干向上爬,白天爬90厘米,夜晚向下滑50厘米。第6天爬完时,刚好达到树梢。这棵树有多高? ‌

int main() {
    int day_climb = 90;    // 白天爬升高度
    int night_slide = 50;  // 夜晚下滑高度
    int net_daily = day_climb - night_slide; // 每日净爬升
    int days = 6;          // 总天数
    int height = 0;        // 树的高度
    
    // 前5天每天净爬升40厘米
    height = net_daily * (days - 1);
    
    // 第6天白天爬升90厘米到达树顶,不再下滑
    height += day_climb;
    
    cout << "树的高度是: " << height << "厘米" << endl;
    
    return 0;
}

作业题2

蜗牛每天白天能爬上4.17米,但到晚上睡觉时又要下滑3.17米。问这只蜗牛多少天后才能爬上树顶?

#include <iostream>

int main() {
    double day_climb = 4.17;    // 白天爬升高度(米)
    double night_slide = 3.17;  // 夜晚下滑高度(米)
    double tree_height = 15.17; // 树的高度(米)
    double current_height = 0.0;
    int days_needed = 0;

    for (int day = 1; ; day++) {
        current_height += day_climb;  // 白天爬升
        days_needed = day;
        
        if (current_height >= tree_height) {
            break;  // 达到或超过树高,结束循环
        }
        
        current_height -= night_slide;  // 夜晚下滑
        if (current_height < 0) {
            current_height = 0;  // 防止滑到地面以下
        }
    }

   cout << "蜗牛需要 " << days_needed << " 天才能爬上树顶" << endl;
    
    return 0;
}

课堂学习

课程回顾

鸡兔同笼

思路分析:

 如果 46只都是兔,一共应有 4×46=184只脚,这和已知的128只脚相比多了184-128=56只脚.

如果用一只鸡来置换一只兔,就要减少4-2=2(只)脚.那么,46只兔里应该换进几只鸡才能使56只脚的差数就没有了呢?

显然,56÷2=28,只要用28只鸡去置换28只兔就行了.所以,鸡的只数就是28,兔的只数是46-28=18. 

电脑购买

思路分析:

如果 8台电脑都是B类型,一共应有 8×7000=56000元,这和已知的钱数相比多了56000-50000=6000元.

如果用一台A来置换一台B,就要减少7000-6000=1000元.

那么,8台里应该换进几台A才能使6000的差数没有呢?

显然,6000÷1000=6,只要用6台A去置换6台B就行了.所以,B的台数为2,A的台数为8-2=6。

代码实现 

int main() {
    // 定义变量:头的数量和腿的数量
    int heads, legs;
    cin>>heads>>legs;

    // 解方程组
    int y = (legs - 2 * heads) / 2;  // 兔子的数量
    int x = heads - y;               // 鸡的数量
    cout<<"鸡"<<x<<"兔"<<y;
    return 0;
}

 课后作业

课后作业1

蜘蛛、蜻蜓和蝉的问题‌:蜘蛛、蜻蜓和蝉共有18只,它们共有腿118条,翅膀20对。已知蜘蛛有8条腿,0对翅膀;蜻蜓有6条腿,2对翅膀;蝉有6条腿,1对翅膀。问题要求计算每种动物的数量。



int main() {
    // 蜘蛛x,蜻蜓y,蝉z
    // x + y + z = 18
    // 8x + 6y + 6z = 118
    // 0x + 2y + 1z = 20
    
    // 从第三个方程得到 z = 20 - 2y
    // 代入第一个方程: x + y + (20-2y) = 18 => x - y = -2 => x = y - 2
    // 代入第二个方程: 8(y-2) + 6y + 6(20-2y) = 118
    // 展开: 8y - 16 + 6y + 120 - 12y = 118
    // 合并: (8y+6y-12y) + (-16+120) = 118 => 2y + 104 = 118 => 2y = 14 => y = 7
    
    int y = 7; // 蜻蜓数量
    int z = 20 - 2 * y; // 蝉数量
    int x = y - 2; // 蜘蛛数量
    
    cout << "蜘蛛数量: " << x << endl;
    cout << "蜻蜓数量: " << y << endl;
    cout << "蝉数量: " << z << endl;
    
    return 0;
}

 

课后作业2

学校宿舍问题‌:学校有12间宿舍,可以住80人。大宿舍住8人,中宿舍住7人,小宿舍住5人。问题要求计算中宿舍和小宿舍各有多少间。


int main() {
    // 大宿舍x,中宿舍y,小宿舍z
    // x + y + z = 12
    // 8x + 7y + 5z = 80
    
    // 从第一个方程得到 x = 12 - y - z
    // 代入第二个方程: 8(12-y-z) + 7y + 5z = 80
    // 展开: 96 - 8y - 8z + 7y + 5z = 80
    // 合并: -y -3z = -16 => y + 3z = 16
    
    // 遍历可能的z值
    for (int z = 0; z <= 5; z++) { // 因为3z <= 16 => z <=5
        int y = 16 - 3 * z;
        int x = 12 - y - z;
        
        // 检查x是否非负
        if (x >= 0 && y >= 0 && z >= 0) {
            // 验证总人数
            if (8*x + 7*y + 5*z == 80) {
                cout << "大宿舍: " << x << " 间" << endl;
                cout << "中宿舍: " << y << " 间" << endl;
                cout << "小宿舍: " << z << " 间" << endl;
                break; // 找到第一个解就退出
            }
        }
    }
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值