数字序列中某一位的数字

有一个字符数组为0123一直往后排,求第n位的数字
暴力解就是循环所有的数字,每循环一个就把它的位数累加,等什么时候超过了n,就说明第n位一定在这个数字中,再具体找到哪一位。

找规律

如果用f(m)表示从开始到位数为m的最大数字的位数之和
则f(0)=0
f(1)=101
f(2)=f(1)+90
2
f(3)=9003+f(2)
f(4)=9000
4+f(3)
f(m)=9*10^(m-1)*m+f(m-1)
所以找到n在哪个区间之后,就可以根据m得到几位数,然后用n-f(m)得到有几个个位数,再用这个除以m得到是第几个数,对m取余得到第几位,然后即可得到这一位是什么。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值