求算式2016个1乘2016个1,乘积的各位数字之和
2023-11-21
分析:
111 = (1000-1)/9 = (10^3-1)/9
1111 = (10000-1)/9 = (10^4-1)/9
所以,2016 个 1 组成的大整数可以表示为:A = (10^2016-1)/9
A*A = (10^2016-1)^2 / 9^2
= (10^4032-2*10^2016+1) / 81
= (10^4032-10^2016)/81 - (10^2016-1)/81
= 10^2016*(10^2016-1)/81 - (10^2016-1)/81
= A/9*10^2016 - A/9
A 是 2016个1构成的大整数,各位数字之和是2016,为9的倍数,因此,A/9 为正整数
用长除法:
A/9 = 0123456790123456790...12345679,首位补 0,224 个循环节 012345679
A/9*10^2016 - A/9
= (012345679...012345679*10^2016-10^2016) + (10^2016-1-012345679...012345679+1)
= (012345679...012345678*10^2016) + (999999999...999999999 - 012345679...12345678)
= (012345679...012345678*10^2016) + (987654320...987654321)
计算各位数字之和:
前一个括号内是 224 组 012345679 减去 1,和为 37*224-1 = 8287
其后是 2016 个 0,与第二个括号的 2016 位数不重叠
后一个括号内是 224 组 987654320 加上 1,和为 44*224+1 = 9857
两者合计为 8287+9857 = 18144
因此,乘积的各位数字之和是 18144
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
可以编程进行验证,结果完全一致。
附:fortran 代码及其运算结果:
广告 您可能关注的内容 |