reflectK 发布于五月 20 分享 发布于五月 20 · 只看该作者 如果一个数的十进制表示中含有 5、2或者0(不含前导 0),则称这个数为"L 数"。 例如 0 ~ 6 中,"L 数"有 3 个,分别为 0 2 5。 在 2147 ~ 2999 中,"L 数"有 853 个。 那么在 1. 0 ~ 10^9 2.10^10^4 ~ 10^(10^4+1) 这两个范围内,"L 数"分别有多少个? 注释 骚男 20.00节操 昨天和今天都出去玩了pwp 这里是糖w 链接到点评
lizard 发布于五月 20 分享 发布于五月 20 · 只看该作者 对于个位数,0 ~ 9 中有 3 个"L 数",即 0、2、5。对于十位数,0 ~ 99 中有 3 个"L 数",每个个位数都会出现 10 次。对于百位数,0 ~ 999 中有 3 个"L 数",每个个位数和十位数都会出现 10 次。 以此类推,对于千位数、万位数等,同样有 3 个"L 数",每个范围都会扩大 10 倍。 因此,在范围 0 ~ 10^9 中,每一位上的数字都会出现 3 次,总共有 10^9 + 1 位数字(包括 0),所以总的"L 数"个数为 3 * (10^9 + 1)。 范围 10^10^4 ~ 10^(10^4+1),同样可以使用类似的方法。每一位上的数字仍然会出现 3 次,而位数的个数为 10^4+1,所以总的"L 数"个数为 3 * (10^4+1)。 为什么520在这做题 注释 reflectK 1.00节操 显然错了www 链接到点评
ymh9588 发布于五月 21 分享 发布于五月 21 · 只看该作者 以Ln表示从0起10^n个数中L数数量,L1(0-9)=3,L2=L1*8+2*10(十位数是2和5的所有数都是所以有2*10个,十位数是其他的的话则有L1*8个),L3=L2*8+2*100,Ln=L(n-1)*8+2*10^(n-1) 可得Ln=3*8^(n-1)+Σ(i=1~n-1)2*10^i*8^(n-1-i),求和部分为等比数列,可得Ln=3*8^(n-1)+(2*10^n/8-20*8^n-2)*4 第一题=L9+1(L9不包括10^9) 第二题=L(10^4+1)-L(10^4)+1 认真的,具体的值懒得算了,这值大部分计算器都溢出了 注释 reflectK 10.00节操 差不多是正确的www 1 链接到点评
DOLAGO 发布于五月 21 分享 发布于五月 21 · 只看该作者 虽然说平生最整不过的就是数学题了,但是好在我会写程序 z = 0 for i in range(1000000000): temp = i contains_2_or_5 = False while temp > 0: if temp % 10 == 2 or temp % 10 == 5: contains_2_or_5 = True break temp = temp // 10 if contains_2_or_5: z += 1 else: while i > 0: if i % 10 == 0: z += 1 break i = i // 10 print(z) 就是数太大了,到现在还没算出来第一题,第二题就不算了 链接到点评
橙子火树 发布于五月 21 分享 发布于五月 21 · 只看该作者 想了很久感觉能不能反着算,就是计算没有这三个数的数的数量,然后用总的数数量减去单纯由1346789这几个数组成的数字的数量,得出的数就是包含520这三个数的数的数量。 链接到点评
橙子火树 发布于五月 21 分享 发布于五月 21 · 只看该作者 一位数的非L数有7的1次方个 两位数的非L数有7的平方个 三位数的非L数有7的三次方个 以此类推 N位数的非L数有7的N次方个,思路是总个数-非L数=L数 ,因为非L数比较好算嘛 第一个问题,0-10的九次方实际上就是问1位数到8位数之间有多少个非L数(去掉最后一个数)。那就是7的1次方加7的2次方一直加到7的8次方个,设为F,那L数=10的九次方+1-F 第二个问题,问10^4-1位数到10^4位数间有多少非L数,分两段,先计算1位数到10^4-1位数间有多少非L数,那就是7的1次方加7的2次方一直加到7的10^4-1次方,设为F1,再计算1位数到10^4位数间有多少非L数,列式;7的1次方一直加到7的10^4次方,设为F2。 F2-F1得出的是10^4-1位数到10^4位数间有多少非L数,设为T。那L数的个数就是就是10^(10^4+1)-10^10^4+1-T。 剩下的就是用等比数列的公式去算了。 设想就是这么个设想,如果有错的地方还望指正。 1 链接到点评
推荐贴