页码统计/牛客网/Python/解题报告+源代码
来源:互联网 发布:大数据资格认证 编辑:程序博客网 时间:2024/06/05 01:08
题目链接:https://www.nowcoder.com/questionTerminal/3a003cb6a3174ef9835fa603e01d8b52
解法一:暴力法。
从第一页到第n页,逐页统计。
复杂度太高,超时。
# def pageCount ():# n = input()# count = [ 0 for i in range(10)]# n = int(n)### for i in range(1,n+1):# curpage = i# while(curpage > 0):# curnum = curpage % 10# curpage = curpage // 10# count[curnum] += 1## for i in range(0, 9):# print(count[i], end = ' ')# print(count[9])## pageCount()
直接从页数n上计算。比如对于页数**X**,计算数字i(0-9)在第3位上统计相关数字出现的次数:
(1)如果数字i比X大,则它在这一位上出现的次数与前面的数字和该数字所在的位置有关。例如,12345中,数字4在第3位出现的次数为:12*100=1200
(2)如果数字等于X,则它在这一位上出现的次数与前面的数字、后面的数字和该数字所在的位置有关。例如,12345中,数字3在第3位上出现的次数为:12*100+45+1=1246
(3)如果数字小于X,则它在这一位上出现的次数与前面的数字和该数字所在的位置有关。例如,12345中,数字2在百位上出现的次数为(12+1)*100=1300
注意!!!如果数字i为0,需要特殊处理!
当i为1-9中一个数时候,比如i为1时:1左边可以有0, 01是成立的。但是对于i=0时候,左边不可以为0.
def pageCount(): n = input() n = int(n) count = [0 for i in range(10)] for i in range(0,10): page = n p = 0 #代表当前数字tmp右边还有几个数字 t = 0 #统计出现次数 while(page // (10**(p)) > 0): tmp = ( page % ( 10 ** (p+1)) ) // (10 ** p) left = page // ( 10 ** (p+1)) right = page % ( 10 ** (p)) #print(left,tmp,right) if( i == 0 ): left -= 1 if (i > tmp): t += left*(10**p) elif (i < tmp): t += (left+1)*(10**p) else: t += ( left*(10**p) + right + 1 ) p += 1 count[i] = t for i in range(0, 9): print(count[i], end = ' ') print(count[9])pageCount()
阅读全文
0 0
- 页码统计/牛客网/Python/解题报告+源代码
- 页码统计解题报告
- [编程题]创造新世界/牛客网/Python/解题报告+源代码
- 解题报告之 字频统计
- [ZJOI2007]报表统计 解题报告
- 页码统计
- Leetcode / C++ / 502. IPO 解题报告+源代码
- Leetcode / C++ / 475. Heaters 解题报告+源代码
- HDU 1251 统计难题(解题报告)
- 字符串中数字统计解题报告
- hdu_2030_汉字统计_解题报告
- HDU1251 统计难题 解题报告--字典树
- HDOJ-1251-统计难题 解题报告
- (解题报告)HDU2008---数值统计
- (解题报告)HDU2017---字符串统计
- hdoj-2566-统计硬币(解题报告)
- hdoj-2017-字符串统计(解题报告)
- codevs 1432 总数统计 二分 解题报告
- javascript virtual DOM
- bootStrapValidator+bootStrap-select的验证不可用 解决办法
- C语言数组清空的几种方法比较
- 浅析php中常量,变量的作用域和生存周期
- 工作所用的日常 Git 命令
- 页码统计/牛客网/Python/解题报告+源代码
- linux 安装svn
- LeetCode 122. Best Time to Buy and Sell Stock II
- nginx负载均衡
- wait(), notify() and notifyAll()
- Ubuntu下安装并配置VS Code编译C++
- hdu6184 (过题全靠抖
- DBCP2 连接池配置
- TLS/SSL 协议详解(11) Server Certificate