输入一个正整数n(1<=n<=9),计算并输出s = 1+12+123+1234+12...n(n位数)的值。假设
时间: 2023-05-08 15:01:38 浏览: 1673
PTA-MOOC《Python程序设计浙江大学》拼题A题目集第二章编程题
题目中所给出的数列s,是由一连串数字拼接而成的。其中,从第1项到第n-1项,每一项都是由前一项加上一个数字而得到的。在第n项之后,数列会开始不断重复追加 1 2 … j(j<=n)这样的数字,并得到新的项。
解题的关键在于,如何确定数列的第n项是什么。我们可以先计算出前n-1项的和,然后从n+1开始,依次添加必要的数字,使新的数字串长度达到n位。具体来说,我们可以先根据以下公式计算出前n-1项的和sum:
sum = (n^2 + n) * (n-1) / 2
其中,^表示乘方运算。计算出sum后,我们就可以把它作为数字串的前缀,并在它的末尾追加必要的数字,直到数字串长度达到n位为止。此时的数字串即为数列的第n项。
为了方便起见,我们可以先求出数列的第9项。具体方法如下:
1. 首先计算出前8项的和sum:
sum = (9^2 + 9) * 4 / 2 = 45 * 4 = 180
2. 然后在sum的末尾追加数字,直到数字串长度达到9位:
18012 1234
因此,数列的第9项为180121234。
我们可以借鉴上述方法,快速求解任意n位数列的值。
阅读全文