求一个算法问题的解答?

lazeyliu 发布于 2013/06/27 21:59
阅读 920
收藏 0

一个数 为n;

计算从 1...到n;所有数字 位数的总和,

不要有循环,有没有一个等式啥的?

谢谢各位


各位..能不能不要有循环啊,要有我也能写出来好不好.....

话说..递归..递归不如循环,

因为...有一个循环(也有可能有并发) 有上百万次,每次都要计算位数,不能每次计算位数里都要有循环或者递归吧? 

求一个公式

加载中
0
袁不语
袁不语
w = int(math.log(n, 10))
total = w*10**w - (10**w - 1)/9 + (n - 10**w + 1)*(w+1)

#推了一下应该是这样,公式可以再化简一下
lazeyliu
lazeyliu
是的.9以内也是对的..
阿成007
不好意思,我算错了,你是对的
袁不语
袁不语
回复 @阿成007 : 你试一下n=8时,你的公式得出什么结果?
阿成007
仅高中数学知识就够了,很简单 应该修改如下: total = w*10**w - (10**w - 1)/9 + (n - 10**(w + 1)+1)*(w+1)
袁不语
袁不语
回复 @Lazey : 我用python实现的,1-9也是没问题的。
下一页
0
明月照大江
明月照大江
高斯公式,谢谢
lazeyliu
lazeyliu
额..你是说那个 求和公式??明显不对啊
lazeyliu
lazeyliu
额...我..不会...百度了一下.总感觉高斯公式大材小用了啊
0
random_walk
random_walk
公式是有的,但是不简洁
0
中山野鬼
中山野鬼
这个问题。。。。。是不是简单的有点不是问题?
lazeyliu
lazeyliu
大神赐教
0
chape
chape
用%不就可以了吗
lazeyliu
lazeyliu
........
0
maradona
maradona

伪代码  func(n){

    if(n==0)return 0;

    return n+func(n-1);

}

lazeyliu
lazeyliu
额,..递归也不考虑
0
c
chicle
n(1+n)/2 等差数列求和公式
lazeyliu
lazeyliu
我去..
0
zsroven
zsroven
先推导1到10^x的公式(10^x是最接近n,比n大的整数x),然后减去(10^x-n)*(n的位数)
0
0
zsroven
zsroven

引用来自“fneg”的答案

递归
递归很容易造成StackOverflowError,当前问题n可能比较大。。。
返回顶部
顶部