博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]233.Number of Digit One
阅读量:5919 次
发布时间:2019-06-19

本文共 1528 字,大约阅读时间需要 5 分钟。

题目

Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n.

For example:

Given n = 13,
Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13.

思路

代码

/*---------------------------------------*   日期:2015-07-19*   作者:SJF0115*   题目: 233.Number of Digit One*   网址:https://leetcode.com/problems/number-of-digit-one/*   结果:AC*   来源:LeetCode*   博客:-----------------------------------------*/#include 
#include
using namespace std;class Solution {public: int countDigitOne(int n) { if(n == 0){ return 0; }//if int result = 0; int lowerNum = 0,curNum = 0,highNum = 0; int base = 1; int num = n; while(num){ // 低位部分 lowerNum = n - num * base; // 当前部分 curNum = num % 10; // 高位部分 highNum = num / 10; // 如果为0则这一位1出现的次数由更高位决定 (更高位数字*当前位数) if(curNum == 0){ result += highNum * base; }//if // 如果为1则这一位1出现的次数不仅受更高位影响还受低位影响(更高位数字*当前位数+低位数字+1) else if(curNum == 1){ result += highNum * base + (lowerNum + 1); }//else // 大于1则仅受更高位影响((更高位数字+1)*当前位数) else{ result += (highNum + 1) * base; }//else num /= 10; base *= 10; }//while return result; }};int main(){ Solution s; int n; while(cin>>n){ cout<
<

转载地址:http://judvx.baihongyu.com/

你可能感兴趣的文章
centos系统删除多余网卡的方法
查看>>
Swap file ".." already exists!
查看>>
深入玩转K8S之外网如何访问业务应用(nginx-ingress篇)
查看>>
Vnc viewer Linux远程连接
查看>>
Symantec System Recovery 2013 R2 安裝操作指南
查看>>
:() { :|:& }; : # <-- 打开终端,输入这个,回车.你看到了什么??
查看>>
Nginx 日志文件切割
查看>>
[李景山php]每天TP5-20170102|thinkphp5-Env.php
查看>>
router-id的作用
查看>>
how to remove sql cluster 2012
查看>>
fdisk交互式划分磁盘分区示例
查看>>
Linux 根分区空间不足,mysql数据占用过大
查看>>
“chaos”的算法--之Floyd算法详解(求最短路径)
查看>>
提高企业IT服务管理能力的神器-ITSM(IT Service Management,IT服务管理)
查看>>
【RHCE学习笔记】RHEL7下ISCSI存储的配置过程
查看>>
SSH Secure Shell Client中文乱码的解决方法
查看>>
我的友情链接
查看>>
django路由层
查看>>
Windows 2008 WDS 服务器搭建续(三)
查看>>
redis-dump数据导出以及redis-load还原数据
查看>>