发现娃学了信息学后,奥数成绩显著提高

编程、算法真是好东西,正好补了娃以前奥数学习重推理重逻辑轻演绎轻尝试的短板!
 
已邀请:
信息学的基础是数学。
握手同感。学奥数有时就要像计算机,用最笨的方法乱拳打死老师傅。
信奥基础适合学习数论枚举最值容斥周期迭代这些专题。
因果搞反了
自身体会学编程对数论和归纳法的题目有帮助。
学人工智能对找规律和空间解析的题目有帮助。
谢谢分享,有用的信息,本来犹豫是否报信息学课,看楼主的帖子基本定了。
数据结构和算法设计练智商。
有点启发。
嗯,有的学生做奥数题不喜欢动笔喜欢长考,多学编程可以破之,循环语句就会教他从1试到10代入比结果再说。分分钟改变懒毛病。
小学信息学问题是没有名师或权威机构。报了班打比赛,家长累如牛。
看到一个著名id
作用相互的,信息学能提高奥数刷题水平,奥数也能提高信息学刷题水平。
 
典型例题:
----------
有两堆一样多的苹果,老师将第一堆苹果分给男生,每人4个,最后剩下6个。 
老师又将第二堆苹果分给女生,每个5个,最后剩下5个。 
已知男生比女生多1人。 
求:女生有多少人?男生有多少人?苹果有多少个?

解法(一)

女生每人分5个苹果,最后剩下5个。假如女生的人数多1个(这样就跟男生数量一样多啦),那么苹果恰巧被分完。 
这样问题就等价为: 
一堆苹果,分给一组人。假如每个人分4个苹果,剩下6个苹果。假如每个人分5个苹果,恰巧分完。 
这样,这组人的人数 = 剩下的苹果总数 / 每个人剩下的苹果个数 = 6 / (5 - 1) = 6。 
所以,男生6人,女生5人,苹果总数是6 * 4 + 6 = 30个。

解法(二):使用方程求解

设苹果总数为y,女生人数为x,则有 
y = 5 * x + 5 (1) 
y = 4 * (x + 1) + 6 (2) 
(2) 式- (1)式得, 
0 = 4 * (x + 1) + 6 - (5 * x + 5) 
解得x = 5, y = 30 
所以,女生5人,男生6人,苹果30个。

解法(三):编程求解

在解法(二)的思想基础上,可以编写程序如下:

#include <stdio.h>

int main()
{
    int x;
    for(x = 1; x < 100000000; x++)
    {
        if(4 * (x + 1) + 6 == 5 * x + 5)
        {
            break;  // 找到合适的x,跳出for循环
        }
    }

    printf("女生的人数为%d\n", x);
    printf("男生的人数为%d\n", x + 1);
    printf("苹果共有%d个\n", 5 * x + 5);

    return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
运行结果为

1 女生的人数为5
2 男生的人数为6
3 苹果共有30个
----------

 
同感,像下面这道迎春杯复赛题,学过信奥的娃理解起来就很容易。
记四位数abcd(字母上面应该有一横线)为X,由它的四个数字a,b,c,d组成的最小四位数记为Y。
如果X一Y=999,那么这样的四位数X共有多少个?
楼上这道题太偏。

要回复问题请先登录注册