定义一个数字,定义输出次数,求叠加数之和,求解?eg:6+66+666=……

1 收藏


直接登录
最新评论
  • 就是那么屌 web前端开发 2016/11/16

    function total(num, count) {

    var sum = [];
    var total = 0;
    var num2 = num;
    sum.push(num);
    for (var i=1;i<count;i++) {
    num += String(num2);
    sum.push(num);
    }
    for (var j=0;j<sum.length;j++) {
    total += Number(sum[j]);
    }
    console.log(total);
    return total;
    }

    先用数组存放数值,然后叠加。本人水平低,不喜勿喷!

  • 可健康了 程序员 2016/12/02

    Haskell:

    repeatStrSum::Int -> Int -> Int
    repeatStrSum a 1 = a
    repeatStrSum a n =
            let x = read xx::Int
            in  x + repeatStrSum a (n-1)
            where xx = foldl1 (++) (take n (repeat $ show a))

  • Sun_1956 90后程序猿 2016/12/02

    都确定数值在int或long之内?都不考虑溢出的?

    还是用java的BigInteger计算把,方便!

    • Sun_1956 90后程序猿 2016/12/02

      而且这道题目,也没那么复杂。

      6+66+666+….说白了就是 1*6+11*6+111*6+1111*6+…

      看到规律了没,把6提出来6*(1+11+111+1111),就是输入的数乘以次数10倍加1的迭代。

       

  • a(0) = 0;
    a(n) = 10 a(n-1) + 1;
    a(n) = (10^n – 1 ) / 9
    S(n) = (10^1+10^2+..+10^n – n)/9
    S(n) = (10(10^n-1)/(10-1) – n)/9
    S(n) = 10(10^n-1)/81 – n/9