find the nth digit

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 15968    Accepted Submission(s): 5042

Problem Description

假设:
S1 = 1
S2 = 12
S3 = 123
S4 = 1234
.........
S9 = 123456789
S10 = 1234567891
S11 = 12345678912
............
S18 = 123456789123456789
..................
现在我们把所有的串连接起来
S = 1121231234.......123456789123456789112345678912.........
那么你能告诉我在S串中的第N个数字是多少吗?

Input

输入首先是一个数字K,代表有K次询问。
接下来的K行每行有一个整数N(1 <= N < 2^31)。

Output

对于每个N,输出S中第N个对应的数字.

Sample Input

6

1

2

3

4

5

10

Sample Output

1

1

2

1

2

4

Author

8600

Source

HDU 2007-Spring Programming Contest - Warm Up (1)

解析:记录前i个有总的有多少个数,二分查找大于等于n的位置的i,则答案就是(n-f[i-1])%9;

为什么可以二分呢?因为2^32也就42亿多,而1叫到1e5就有50亿,说明可以二分

#include<bits/stdc++.h>
using namespace std;#define e exp(1)
#define pi acos(-1)
#define mod 1000000007
#define inf 0x3f3f3f3f
#define ll long long
#define ull unsigned long long
#define mem(a,b) memset(a,b,sizeof(a))
int gcd(int a,int b){return b?gcd(b,a%b):a;}const int maxn=1e5+5;
ll f[maxn];
void init()
{f[0]=0;for(ll i=1; i<maxn; i++){f[i]=f[i-1]+i;}
}
int main()
{init();int T;scanf("%d",&T);while(T--){ll n;scanf("%lld",&n);int x,l=1,r=1e5,mid=(l+r)/2;while(r-l>1){if(f[mid]>n)r=mid;else l=mid;mid=(l+r)/2;}if(n>f[l])x=r;else x=l;printf("%d\n",(n-f[x-1])%9?(n-f[x-1])%9:9);}return 0;
}

hdu1597(二分)相关推荐

  1. HDU1597【二分瞎搞】

    题意: 求第n个数: 思路: 可以看到一种序列: 1 12 123 1234 12345 123456 1234567 12345678 123456789 1234567891 1234567891 ...

  2. hdu1597 find the nth digit(二分查找)

    find the nth digit Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  3. hdu 2141 Can you find it? hdu1597 find the nth digit

    hdu2141 唉,是我 想多了,用普通方法拼命剪枝,还是TLE 直接将前俩个数组的和求出来并保存,之后就是一个二分查找的过程了 二分的俩种写法 第一种 #include<iostream> ...

  4. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  5. 分治算法的设计思想(二分检索、二分归并排序)

    分治策略思想: 将原问题划分或者归结为规模较小的子问题. 递归或迭代求解每一个问题. 将子问题的解综合得到原问题的解. 性质: 子问题与原问题具有相同的性质. 子问题的求解彼此独立. 划分时子问题的规 ...

  6. LeetCode简单题之二分查找

    题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. 示例 1: 输入: n ...

  7. 二分查找模板全面总结

    二分查找 二分法的引入 情形1 1.X的平方根 2.搜索旋转排序数组 情形2 1.第一个错误的版本 2.寻找峰值 3.寻找旋转排序数组中的最小值 情形3 在排序数组中查找第一个和最后一个位置 当遇到查 ...

  8. [C] [二分] C语言实现快速排序

    为了以防万一有人想不开想手撕快排呢?比如我. 通过快排来理解二分思想 什么是快排? 快排的思想不难,理解好递归很重要. 什么是递归? 递归,就是在运行的过程中调用自己. 构成递归需具备的条件: 子问题 ...

  9. Showstopper [POJ3484] [二分] [思维]

    Description 给你n个数列,问哪一个数字在所有的数列中出现了奇数次(最多一个). Sample Input 1 10 1 2 10 11 10 1 1 10 11 10 1 4 4 1 1 ...

最新文章

  1. 微型计算机中的外存储器 现在普遍采用,2010澳门特别行政区全国计算机等级考试二级笔试试卷VB最新考试试题库(完整版)...
  2. linux中yum源的配置和使用
  3. 不知道哪个学校教务处管理系统的图
  4. java视频教程之Java小白学习方法
  5. 软件默认安装路径C盘(更改办法)
  6. SQL SERVER拼接字符串(字符串中有变量)
  7. Python | 实现双色球选号(educoder)
  8. Mysql间隔时间查询数据
  9. 编写批量修改扩展名脚本
  10. 10本 JavaScript PDF 书籍免费分享
  11. C#代码审计实战+前置知识
  12. 计算机在线修改相片,全国普通计算机等级考试照片尺寸 在线调整的方法
  13. SII-Slave Information Interface
  14. NFT Insider #48:The Sandbox发布内测版第二季,FTX Gaming与YGGIndia达成合作
  15. 使用火焰传感器和Arduino开发板搭建火灾报警系统
  16. 《jdk8u源码分析》6.1.GetJREPath
  17. Fastadmin创蓝短信插件源码
  18. 喜欢最新电子产品的人
  19. iOS - 使用自定义字体-苹方字体
  20. 总结Excelhome论坛之揭开Excel平滑曲线的秘密(贝塞尔插值)

热门文章

  1. 【模式匹配】KMP算法的来龙去脉
  2. 对于ssh和hadoop联系讲解和ssh的基本内容
  3. [BZOJ 3942] [Usaco2015 Feb] Censoring 【KMP】
  4. 准时制 jit 减少库存
  5. 图书《图像并行处理技术》简介
  6. Python学习:使用Python解释器
  7. GPU(CUDA)学习日记(十一)------ 深入理解CUDA线程层次以及关于设置线程数的思考
  8. 写python的c扩展简介
  9. Linux服务器安装NodeJs简易方法
  10. 二十万字C/C++、嵌入式软开面试题全集宝典十一