前言
在世界各地流传着一些用民谣形式写成的数学题。
一、寒鸦与树枝
"寒鸦与树枝"是一首俄罗斯的民谣:
飞来几只寒鸦,
落到树枝上停歇。
要是每支树枝上
落下一只寒鸦,
那么就有一只寒鸦
缺少一支树枝;
要是每支树枝上
落下两只寒鸦,
那么就有一支树枝
落不上寒鸦。
你说共有几只寒鸦?
你说共有几支树枝?
可以这样来解:
如果每支树枝上落2只寒鸦,比每支树枝落一只寒鸦共多出2+1=3(只)寒鸦,而这时每支树枝上所落寒鸦只数的差为2-1=1(只)。
用多出来的寒鸦数除以每支树枝寒鸦的差数,就等于树枝数。
因此,树枝数为
(2+1)÷(2-1)=3+1=3(支).
寒鸦数为3+1=4(只).
答案是有3支树枝,4只寒鸦。
《数学大世界》书上如是解答,个人觉得颇为费解。于是运用计算思维,写了个程序来进行穷举,猜测可能有多组答案,但实际情况却是在1000以内均只找到了一组答案,于是索性加条break语句不往后找了。
#include<iostream>
using namespace std;
int main() {
int crows, branches;
for(int crows=1; crows<=1000; crows++) {
branches = crows-1;
if(branches*2 - 2 == crows) {
cout << "crows: " << crows;
cout << ", ";
cout << "branches: " << branches;
cout << endl;
break;
}
}
return 0;
}
运行程序,输出:
crows: 4, branches: 3
二、牧童王小良
下面这首民谣也很有趣,是中国民谣:
牧童王小良,放牧一群羊。
问他羊几只,请你细细想。
头数加只数,只数减头数。
只数乘头数,只数除头数。
四数连加起,正好一百数。
其实头数和只数是一回事,因此,只数减头数得0,只数除头数得1。这样一来,有:
只数 x 只数+2x只数=99.
使用试验法,可得只数等于9,因为
9x9+2x9=99,
故羊有9只。
此题不难理解,但却是适合小朋友学编程。
#include<iostream>
using namespace std;
int main() {
int c=2; //the number of sheep
while(c<100) {
if(2*c + 0 + c*c + 1 == 100) {
cout << "sheep: " << c << endl;
break;
}
c++;
}
return 0;
}
运行程序,输出:
sheep: 9
总结
本文介绍的内容包含两个数学题,对这两个数学问题,不仅使用了数学方法进行了解答,同时也使用了计算机程序采用枚举法来进行了求解。所以,本文内容也勉强可算是对数学思维与计算思维在问题求解上的异同进行了一个初步的比较。