/*
题目:
数字以0123456789101112131415…的格式序列化到一个字符序列中。
在这个序列中,第5位(从0开始计数,即从第0位开始)是5,第13位是1,第19位是4,等等。
请写一个函数,求任意第n位对应的数字。
*/ #include<iostream>
#include<string.h> using namespace std; //自己实现pow,使用codeblocks中的pow,会转化为浮点数进行截断,得到的结果不准确。
int pow(int num,int digits){ int res = 1;
for(int i = 0; i < digits; i++){
res *= num;
}
return res;
}
/*
解法一:
一个数字一个数字遍历,当数字位数之和超过n,则所需数字在遍历到的最后一个数字。
*/
int NumberOfSequence1(int n){
if(n < 0) return -1;
int currNumber = 0;
int myCount = 0;
while(myCount <= n){
myCount += to_string(currNumber).size();
currNumber++;
}
return to_string(currNumber-1)[n-myCount+to_string(currNumber-1).size()] -'0';
} /*
解法二:
0~9中有10个数,10~99有2*90=180个数,100~999有3*900=2700个数
例1001,可以有10+180<1001 && 10+180+2700>1001,所以要找的数在100~999中
1001-10-180=881,881/3=270,881%3=1,所以要找的数在100+270=370中
其中截止到369有810个数字,3为第811个数字,7为第812个数字,0为813个数字
从0开始计数,则7为811位数字。
*/
int NumberOfSequence2(int n){
if(n < 0) return -1;
if(n < 9) return n; int myCount = 10;
int i = 2;
while(myCount <= n){
myCount = myCount + (int)i*9*pow(10,i-1);
i++;
}
int temp = n - (myCount - (i-1)*9*pow(10,i-2));
int res_index= temp%(i-1);
int res_val = (temp / (i - 1) + pow(10,i-2)); return to_string(res_val)[res_index] - '0';
} int main(){
cout<<NumberOfSequence2(1500000)<<endl;
cout<<NumberOfSequence1(1500000)<<endl;
}

  

剑指offer-面试题44-数字序列中某一位的数字-脑筋急转弯的更多相关文章

  1. Leetcode - 剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)

    剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163 ...

  2. 剑指 Offer 44. 数字序列中某一位的数字 + 找规律 + 数位

    剑指 Offer 44. 数字序列中某一位的数字 Offer_44 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author Wale ...

  3. C++版 - 剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题,ZOJ 1088:System Overload类似)题解

    剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题) 原书题目:0, 1, - , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字.求出这个圈圈里剩下的最后一个数字 ...

  4. 《剑指offer》第四十四题(数字序列中某一位的数字)

    // 面试题44:数字序列中某一位的数字 // 题目:数字以0123456789101112131415…的格式序列化到一个字符序列中.在这 // 个序列中,第5位(从0开始计数)是5,第13位是1, ...

  5. 【Offer】[44] 【数字序列中某一位的数字】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 数字以0123456789101112131415..的格式序列化到一个字符序列中.在这个序列中,第5位(从0开始计数)是5,第13位是 ...

  6. 《剑指offer》面试题44. 数字序列中某一位的数字

    问题描述 数字以0123456789101112131415-的格式序列化到一个字符序列中.在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等. 请写一个函数,求任意第n位 ...

  7. 每日一题 - 剑指 Offer 44. 数字序列中某一位的数字

    题目信息 时间: 2019-07-01 题目链接:Leetcode tag: 规律 难易程度:中等 题目描述: 数字以0123456789101112131415-的格式序列化到一个字符序列中.在这个 ...

  8. 剑指 Offer 44. 数字序列中某一位的数字

    题目描述 数字以0123456789101112131415-的格式序列化到一个字符序列中.在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等. 请写一个函数,求任意第n位 ...

  9. 剑指offer——46数字序列中某一位的数字

    题目: 数字以0123456789101112131415…的格式序列化到一个字符序列中.在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等.请写一个函数,求任意第n位对应的数 ...

随机推荐

  1. ceph问题

    问题1: [root@admin-node my-cluster]# ceph -s cluster 4ca35731-2ccf-47fb-9f06-41fae858626d health HEALT ...

  2. VUE报表开发

    因为在项目中经常开发一些报表,并且业务.逻辑其实都有大部分的重复部分. 所以将这些常用的模块抽象出来.并且可视化操作.封装成一款报表开发工具. 先看一下项目的一些效果:数据单项绑定 可视化操作: 数据 ...

  3. 一分钟简单了解 JSON Web Token

    JSON Web Token(JWT)是一个开放的标准(RFC 7519),它定义了一个紧凑且自包含的方式,用于在各方之间作为 JSON 对象安全地传输信息.由于此信息是经过数字签名的,因此可以被验证 ...

  4. HEXO常用命令总结

    博客搬家:hexo常用命令总结 常见命令 hexo new "postName" #新建文章 hexo new page "pageName" #新建页面(新建 ...

  5. caffe solver configuration

    (用到一个加一个, 并非完整的介绍) lr_policy 基本的learning rate 在solver.prototxt中由参数base_lr配置. 配合lr_policy和其余的一些参数制定le ...

  6. 题解【[AHOI2013]作业】

    \[ \texttt{Preface} \] 数据貌似很水,据说 \(A_i\leq n\) ,连离散化都不需要. 不知道为啥设块大小为 \(\frac{n}{\sqrt m}\) 会一直 Runti ...

  7. NR / 5G - The Round Robin algorithm

  8. The Divide and Conquer Approach - 归并排序

    The divide and conquer approach - 归并排序 归并排序所应用的理论思想叫做分治法. 分治法的思想是: 将问题分解为若干个规模较小,并且类似于原问题的子问题, 然后递归( ...

  9. 获取本机网卡ip地址

    import sys, os import socket, struct, fcntl import six import psutil def get_ip(iface="enp0s3&q ...

  10. 如何构建OpenStack镜像

    本文以制作CentOS7.2镜像为例,详细介绍手动制作OpenStack镜像详细步骤,解释每一步这么做的原因.镜像上传到OpenStack glance,支持以下几个功能: 支持密码注入功能(nova ...