C语言编程:S=1+22+333+4444+…+n…n
这是在百度知道看到的一个问题。初看好像很简单,比1+2+3+…+99+100难不了多少,不过自己动手开始写问题就来了。
一开始想用个循环把每一项的数字算出来,结果发现自己搞不定……这个式子每一项数字的位数和项数本身相关(第几项就有几位数),似乎很简单,但是仔细想才发现,不是n*10的问题,而是10的n次方的问题。我硬想通过一两个循环把每一项都算出来,可惜能力有限,越搞越头晕。
只能另想办法了。不禁感叹算法果然是十分重要啊!自己一文科专业背景初学C,还没看过任何算法的书,现在这么有规律的数列都整不出来……
后来干脆一步一步来,先算出“11…11”这样的数,保证1的数量和n相同,然后再乘以n就是每一项的数字,最后在把它们加起来。
为了保证自己不出错,我打算干脆一小块一小块的写,心想只要我每一个步骤都用小段程序实现了,剩下的就是“组装”了。
先实现“11…11”吧。写了段代码,编译、运行、成功!嘿嘿,总算往最后的胜利跨出了坚实的一步!
- #include <stdio.h>
- i