体育室篮球数量-每次借走一半多一个

744 阅读4分钟

体育室篮球数量-每次借走一半多一个

题干

体育室有一些篮球,体育课时候,二年级一班借走一半还多一个。二年级二班借走剩下的一半还多一个,此时体育室还剩3个篮球。问体育室原先一共有多少个篮球?(小学二年级阳光同学)

分析

一定要理解这句话的含义:借走一半还多一个,此时剩N个。通过这句话是可以求出借走了多少个,以及原先有多少个。

举例说明

案例一:
王伯卖瓜,摊位上一共有20个西瓜,陈老板买走了一半还多一个。
问陈老板买了多少个,王伯还剩多少个西瓜?
20的一半,是10个,还多一个就是 10 + 1 = 11(个),陈老板买走了11个西瓜
王伯还剩,20 - 11 = 9 个。
卖出去的和剩余的相差是2个。
案例二:
妈妈手上一共有10个一元的硬币,给了小明一半还多一个,小明有多少元,妈妈有多少元?
10元的一半 是5,还多一元,5 + 1= 6(元),小明有6元
妈妈还剩 10 - 6 = 4 元。
案例三:
有N块糖果,分给了小花和小红,小花分到了一半还多1个,小红分到了6块糖果。
问小花有多少块糖果,一共有多少块糖果?
小花分到的糖果 6 + 2 = 8 (块),
一共有多少糖果 小红 + 小花 , 6 + 8 = 14 (块)

借走一半还多一个,此时有N个。那么可以求出借走了的数量, 借走的数量 = 剩余的数量 + 2 (为什么加2,一定要明白逻辑,上面介绍几个就是要明白加2的逻辑)。借走的的剩余的都知道了,可以求出未借出之前的数量,二者相加(借走的数量 + 剩余的数量)。

一班借走一些篮球,接着二班又借走一些篮球,求没借出之前的篮球数量,这个含义是逆向思维。什么意思呢?我从 A 点 走到了 B 点,又从 B 点走到了 C 点,逆向思维就是从 C 点回到 B 点,再从 B点回到 A 点,反过来的过程。

此题还有一个注意点,就是等价替换。二班借走前有多少个篮球,等价于一班借走后还剩余多少个篮球,一班借之前的篮球数量,等价于体育室原先的篮球数量。

解答和验证

解答:

二班借走的篮球数量 = 二班借之后剩余的篮球数量 + 2 
                   = 3 + 2 = 5(个),二班借走了5个篮球。

二班借之前的篮球数量 = 二班借的篮球数量 + 二班借之后剩余的篮球数量 
                     = 5 + 3 = 8 (个)
						 
一班借之后的篮球数量 = 二班借之前的篮球数量 = 8 (个)
	
一班借的篮球数量 = 一班借之后的篮球数量 + 2 
                 = 8 + 2 = 10 (个)
一班借之前的篮球数量 = 一班借的篮球数量 + 一班借之后剩余的篮球数量
                     = 10 + 8 = 18 (个)
体育室原先的篮球数量 = 一班借之前的篮球数量 = 18(个)

验证:

体育室原先有18个篮球,
一班借走一半还多一个,一班借走了 18的一半,(二九一十八)9个,再加一个,
即一半借走了了10个
此时还剩的数量就是 18 - 10 = 8个

二班借了一半还多一个,8的一半(二四得八)4个,再加一个
即二班借走了5个,
此时还剩的篮球数量 = 8 - 5 = 3(个)
还剩3个和题干相吻合,说明上述的解答是正确的。

数学解答题一定要有验证的过程

编程实现

#include <iostream>
using namespace std;

int borrowNum(int remain);
int borrowNum(int remain,int more);
int beforeTotal(int remain,int borrow);


int main() {
    std::cout << "Welcome to CHEN YUAN Coding  .  Phone : 025 - 8662 0610" <<std::endl;

    int borrow,times,remain,total;
    cout<<"enter the total class of Borrowing basketball , and the last remaining basketball:";
    cin>>times>>remain;

    for(;times>=1;times--){
        borrow= borrowNum(remain); // 求出借走的数量
        total= beforeTotal(remain,borrow); // 求借出之前的数量
        remain=total; // 当前剩余 -- 很关键
    }
    printf("the total basketball is : %2d ",total);

    cout<<"\n\n\nThe main func ending ... ..."<<endl;
    return 0;
}


// 借走的数量,默认是一半多一个
int borrowNum(int remain){
    return remain+2; // 2 实际含义是 2 * 1 
}

//借走的数量,一半多 more 个
int borrowNum(int remain,int more){
    return remain+2*more;
}


// 借之前数量,剩余 + 借走的数量
int beforeTotal(int remain,int borrow){
    return remain+borrow;
}

运行效果

image.png

扩展

体育室篮球数量-每次借走一半多2个

体育室篮球数量-每次借走一半少一个

体育室篮球数量-每次借走一半少2个