sn=6+66+666+…+66…66n个6。输入一个正整数nn的范围是010。输出Sn的值
当n=0时,Sn=0; 当n≥1时,由于每一项都是6的倍数,所以可以分别计算每一项的值,再将它们相加。对于第i项,其值为6×(1+10+...+10^(i-1))+6×(1+10+...+10^(i-2))+...+6×(1+10)=6×(1+10+...+10^(i-1)+1+10+...+10^(i-2)+...+1+10)=6×[i×(10^(i-1)+10^(i-2)+...+10+1)]=6×i×(10^i-1)/9,所以Sn=6×(1×(10^1-1)/9+2×(10^2-1)/9+...+(n-1)×(10^(n-1)-1)/9+n×(10^n-1)/9)=6×[1/9×(1×(10^1-1)+2×(10^2-1)+...+(n-1)×(10^(n-1)-1)+n×(10^n-1))]=6×[1/9×(10^n×n-9n-10^(n-1)+1)]=2×n×(2×10^n-3n-1)/3。因此,程序如下:
n = int(input()) if n == 0: print(0) else: sn = 2 * n * (2 * 10**n - 3 * n - 1) / 3 print(sn
原文地址: http://www.cveoy.top/t/topic/hfEx 著作权归作者所有。请勿转载和采集!