一个简单又有趣的题目
简单:因为编程枚举很方便,验证结果是无解的。
有趣:用数学方法证明它无解,还是有点意思的。
编程不复杂。 因为计算量小,不需要考虑效率,用 Fortran 写了一段可读性好代码,枚举数值写入字符串,按照题意利用字符串进行比对。程序代码附在文末。
以下是数学方法求证本题无解
用字母代替汉字,输入更方便一点。
sxhz+sxyz = yzhsx
由这个表达题意的形式方程,得出两个初步结论:
y是加法的进位,所以,y = 1
个位数字 z+z 得到 x,无论进位与否,x 一定是偶数
据此,形式方程为:
sxhz+sx1z = 1zhsx
转换成用于分析的计算方程:
1000s+100x+10h+z+1000s+100x+10+z = 10000+1000z+100h+10s+x
10000-1990s+90h-10+998z-199x = 0
1000-199s+9h-1+(998z-199x)/10 = 0
1000-199s+9h-1 为整数,方程右边也是整数,得出:
(998z-199x)/10 必须是整数
(998z-199x)/10
= (1000z-200x-2z+x)/10
= 100z-20x-(2z-x)/10
因为 2z-x ≤ 2*9-0 = 18
所以:2z-x = 10
由初步结论 x 一定是偶数,具体分析:
x = 2,z = 1 或 6,不成立
x = 4,z = 2 或 7,不成立
x = 6,z = 3 或 8,不成立
x = 8,z = 4 或 9,不成立
对于 x = 0,z = 5 的情形:
1000-199s+9h-1+(9985-1990)/10 = 0
h = (199s-1498)/9
199s-1498 > 0,s > 7.5…,s 可以取 8 或 9
代入上式,无整数解
对于 x = z = 0 的情形:
1000-199s+9h-1 = 0
h = (199s-999)/9
199s-999 > 0,s > 5.02…,s 可以取 6、7、8、9
代入上式,只有 s = 9 时,h 有整数解 s = 88 > 9,不符题意
综上,计算方程无解;即:本题无解。
附:Fortran 代码
$freeform
! 数学好做 + 数学易做 = 易做好数学
! sxhz + sxyz = yzhsx
! a + b = c
! 2023-09-23
! szw_sh@163.com
character*4 a,b
character*5 c
do i=1000,9999 ! 枚举 sxhz
write(a,'(i4)') i ! 写入字符串 a
do j=1,9 ! 枚举 sxyz 的 y
b=a ! 写入字符串 b
write(b(3:3),'(i1)') j
read(b,'(i4)') k
kk=i+k ! 求和 yzhsx
if(kk.lt.10000) cycle
write(c,'(i5)') kk ! 写入字符串 c
if(a(1:2).ne.c(4:5)) cycle ! 检验 abc 相同部分
if(a(3:3).ne.c(3:3)) cycle ! 不符合题意的,跳过
if(a(4:4).ne.c(2:2)) cycle
if(b(3:3).ne.c(1:1)) cycle
m=m+1 ! 计数,输出
write(*,'(i4,a,i4,a,i5)') i,'+',k,'=',kk
end do
end do
write(*,'(//a,i1)') 'total = ',m ! 输出解的总数
end