3.4 优美和式与平方式

优美和式是一个创新填数趣题,其优美体现在所涉约定数字在和式中不重复,是和谐美的具体体现。

和式分为3项和式(左边两项求和)和引申的4项和式(左边3项求和)两类,益智训练,各具特色。

3.4.1 9数字优美和式

因9数字优美和式涉及1~9这9个正整数,不涉及数字0,变化较为简单。

试把1,2,…,9这9个数字分别填入以下和式中的9个□中,要求1~9这9个数字在式中出现一次且只出现一次,使得和式成立。

【问题1】 试求和式(1)中的和(即式右3位数)的最大值。

【思考】 从进位次数确定式右的数字和入手。

注意到1~9这9个数字之和为45。

(1)确定进位次数。

式左求和时每一次进位,所进的1相当于10,求和结果的数字和会减少9。

例如,数式218+439=657中,式右的数字和为18,式左的数字和为27,式右比式左的数字和要小9,就是求和运算的一次进位8+9=17造成的。

首先确定:和式(1)左边求和过程中有一次且只有一次进位。

事实上,假若左边求和时没有进位,则式左的6个数字之和与式右的3个数字之和相等,即都为9个数字之和45的一半(非整数),矛盾。

假若左边求和有2次进位,使数字和减小了2×9=18,因而式右的3个数字之和为45-2×9=27的一半(非整数),矛盾。

假若式左边求和有3次进位,则式右作为求和结果必为4位数,矛盾。

可见,和式(1)左边求和过程中有一次且只有一次进位。

(2)确定式右3位数的数字和。

和式左边求和有一次进位,因而和式右边的3个数字之和为(45-9)/2=18。

(3)探索最大值。

根据式右3位数的3个互不相同的数字之和为18,其最大值的高位(即百位)数字尽可能大,选择填9;十位数字也尽可能大,可填8;相应个位数字为1。

对于所填和981,需寻找相应的数字1~9没有重复数字的和式(可能存在多个),例如和式235+746=981。

因而得和式(1)右边和的最大值为981。

【编程拓展】

和式(1)右边和的最小值为多大?和式(1)共有多少种不同的填法?以下应用程序设计来探求这些问题。

为避免式左两个加数交换个位数字,或交换十位数字,或交换百位数字造成多种重复,约定式左两个加数的前一个3位数的各位数字分别小于后一个3位数的相应数字。

同时,为了便于观察右边和的最小值与最大值,约定式右边的和按从小到大排列,且要求每一个和值只输出一个和式。

1. 设计要点

设3个3位数为a,b,c,和式为a+b=c。

(1)设置循环。

建立和数c循环(315~987),这里循环初值315是百位数为3(因左边a,b都有较小的百位数字)且为9倍数的最小3位数;循环终值为没有重复数字的最大3位数987;循环步长设为9以提高搜索效率。

同时建立加数a循环(123~c/2),因约定a<b,因而循环终止值为c/2。另一加数显然为b=c-a。

(2)分离数字排除数字重复。

应用整除/与求余%运算分解各数的各个数字。为了检测是否存在重复数字,设置g数组统计a,b,c所分解的9个数字的频数,应用2重循环实施比较,若存在重复数字,则标注t=1返回。

(3)条件输出。

在输出和式时为确保式左前一个3位数的各位数字分别小于后一个3位数的相应数字,在输出条件中增加条件限制

     a/100<b/100&&a%10<b%10&&(a/10)%10<(b/10)%10

特别地,每输出一个和式,即行退出内循环,确保一个和值c只输出一个和式。

2. 程序设计
3. 程序运行结果与说明

以上运行结果输出31个优美和式,这31个和式靠人工推算可能很难完整。

同时看出,和式(1)右边和的最小值为459,最大值为981,与上面所解相同。

【引申】 把和式(1)左边的2项分解为3项,即为以下的4项和式。

和式(2)涉及4项a+b+c=d,在以上程序基础上,增加一重循环,各参数进行相应变通,具体修改请自行完成。

优美和式(2)的解如下:

由以上运行结果输出的13个和式看出,和式(2)右边和的最大值为846,最小值为234。

3.4.2 10数字优美和式

10数字优美和式涉及0~9这10个数字,因涉及数字0,因而其变化较为复杂。

把0,1,2,…,9这10个数字分别填入以下和式中的10个□中,要求0~9这10个数字在式中出现一次且只出现一次(约定0不能在各个整数的首位),使得和式成立。

【问题2】 试求和式(3)中和(即式右4位数)的最大值。

【思考】 从进位次数确定式右4位数的数字和入手。

(1)确定式(3)右边4位数的数字和。

左边求和至少有一次进位(否则右边和不可能为4位)。

同时,左边求和过程中不会出现2次进位。假设出现2次进位,注意到每一次进位数字和会减少9,右边4位数的数字和为(45-2×9)/2,非整数,矛盾。

当左边求和有一次进位时,右边数字和为(45-9)/2=18。

当左边求和有3次进位时,右边数字和为(45-3×9)/2=9。

(2)式右边的4个数字中必有一个0。

当式右边数字和为9,或为18时,数字0必出现在式右边的4位数之中。

(3)右边数字和为9时探索最大值。

当右边数字和为9时,注意到右边4位数的高位只能为1,还有一个数字0,因而4个数字中的最大数字只可能为6(假设最大数字为7,造成两个数字1重复;假设最大数字为8,造成两个数字0重复)。

设4个数字中的最大数字为6,则4位数最大值可能为1620,1602。

注意到最大值若为1620,由于0出现在个位,左边没有适当数字匹配,不能成为和式。

设右边4位数最大值为1602,存在相应的和式:743+859=1602。

结论:和式右边和的最大值为1602。

【编程拓展】

和式(3)右边和的最小值为多大?和式(3)共有多少种不同的填法?以下借助程序设计探求这些问题。

为避免式左两个加数交换个位数字,或交换十位数字,或交换百位数字造成重复,约定式左两个加数的前一个3位数其各位数字分别小于后一个3位数的相应数字。

同时,为了便于观察右边和的最小与最大值,约定右边和按从小到大排列,且要求每一个和值只输出一个和式。

(1)设计要点。

设3个3位数为a,b,c,即和式为a+b=c。

建立和数c循环(1026~1987),这里1026是被9整除且没有重复数字的最小4位数,循环步长设为9,以提高搜索效率。

同时建立加数a循环(102~c/2),这里102是没有重复数字的最小3位数,约定a<b,因而循环终止值为c/2。另一加数显然为b=c-a。

应用整除/与求余%运算分解各数的各个数字。为了检测是否存在重复数字,设置g数组统计所分解的10个数字的频数,应用2重循环实施比较。

特别地,每输出一个和式,即行退出内循环,确保一个和值只输出一个和式。

(2)程序设计。

(3)程序运行结果与说明。

由以上运行结果输出的10个和式看出,和式(3)右边和的最小值为1026,最大值为1602,与上面所解结论相同。

【引申】 把和式(3)左边的2项分解为3项,即为以下的4项和式。

和式(4)涉及4项a+b+c=d,请在以上程序基础上,增加一重循环,各参数作相应变通,具体修改请自行完成。

优美和式(4)的解如下:

     1:3+45+978=1026
     2:2+46+987=1035
     3:2+64+987=1053
     4:3+74+985=1062
     共以上4个10数字4项和式。

由以上运行结果输出的4个和式看出,和式(4)右边和的最大值为1062,最小值为1026。

3.4.3 优美平方式

优美平方式:如果数字1~9不重复填入式(5)的9个□中使等式成立,则该等式称为优美平方式。

式(5)的左边为一个6位数,右边是一个3位数的平方。

编程构建所有优美平方式。

1. 设计要点

设置f数组存储式中各个数字的频数,便于比较是否存在重复数字。

(1)枚举循环设置。

若整数a为4位,则a2的位数达7位,超出范围。因而整数a只能为3位。

通过循环计算最小的3位整数t,设置循环a(t+1~10∗t-1)枚举3位整数。

计算d=a∗a,若d的位数不足6位,则a与d的位数之和小于9,因而导致数字1~9填不下,则返回。

(2)分离整数数字并统计频数。

应用求余与取整运算分离a,d的各个数字。

在数组元素f[k](k:0~9)清零后,通过f[k]++统计各数字的频数。

(3)检测重复数字。

检测整数a,d的数字频数f[k],若f[k]≠1(k:1~9),则返回。

若f[k]=1(k:1~9),满足优美要求,则输出平方式。

2. 程序设计
3. 程序运行示例与说明
     1:321489=567^2
     2:729316=854^2
     共以上2个9数字优美平方式。

我们看到,输出的两个优美平方式中的9个数字为1~9不重复出现。

能否加入数字0构建10数字优美平方式呢?回答是否定的。因为3位整数a的平方数最多为6位,若a增加为4位,则d=a2至少为7位,超出10位的数字范围。