【程序18】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时
共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
2.程序源代码:
main()
{
int a, n, count=1;
long int sn = 0,tn = 0;
printf("please input a and n/n");
scanf("%d,%d", &a, &n);
printf("a = %d,n = %d/n", a, n);
while (count <= n)
{
tn = tn + a;
sn = sn + tn;
a = a * 10;
++count;
}
printf("a+aa+...=%ld/n",sn);
}
此题仍然用迭代思想,算法复杂度为O(4n),还有一种算法是将所有个位a累加,然后十位a累加....一直到n位a累加,不过这样算法复杂度就是O(n2),所以上述算法还是比较好的。