百度c语言贴吧 经典C源程序100例-18

【程序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),所以上述算法还是比较好的。

你可能感兴趣的:(C,Programing)