find the nth digit

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

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
题目分析:
可以得知第n个串长度为n,所以总长度为n(n+1)/2,那么我们找到完整的串,然后减掉,只剩下下一个不完整的,对9取模,就能得到要求的数字

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>using namespace std;typedef long long LL;int t;
LL n;int mod[11] = {9,1,2,3,4,5,6,7,8};LL f ( LL x )
{return x*(x+1)/2;
}LL search ( LL n )
{LL left = 1 , right = n , mid;while ( left != right ){mid = (left + right+1) >> 1;if ( f(mid) > n ) right = mid-1;else left = mid;} return left;
}int main ( )
{scanf ( "%d" , &t );while ( t-- ){scanf ( "%lld" , &n );LL x = search ( n );if ( f(x) == n ) printf ( "%d\n" , mod[x%9] );else{x = n - f(x);printf ( "%d\n" , mod[x%9] );}}
}

hdu 1597 find the nth digit(等差求和+二分)相关推荐

  1. HDU 1597 find the nth digit (二分查找)

    二分查找 1 #include<stdio.h> 2 __int64 a[65555]; 3 void init() 4 { 5 a[0]=0; 6 for(int i=1;i<65 ...

  2. HDU - 1597 find the nth digit 【找规律】

    Description 假设: S1 = 1 S2 = 12 S3 = 123 S4 = 1234 ......... S9 = 123456789 S10 = 1234567891 S11 = 12 ...

  3. 杭电1597 find the nth digit

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

  4. HDU 4407 Sum(容斥+等差求和)

    题目大意:给n个数,1-n.然后有m次操作,分别是求(x,y)中与p互质的和:将第x个数替换成c. 思路:一开始觉得区间操作往线段树上想,但是要存的东西太多,没有办法实现. 后面其实仔细一想跟前面几道 ...

  5. 【HDOJ】1597 find the nth digit

    二分. 1 #include <stdio.h> 2 #include <math.h> 3 4 int main() { 5 int case_n; 6 double n, ...

  6. HDU1597 find the nth digit【模拟】

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

  7. 2058(等差求和)

    HDU 2058 The sum problem 等差求和公式: Sn=(a1+aN)*n/2     =(a1+a1+d(n-1))*n/2     =a1*n+d(n-1)*n/2; 因为此处公差 ...

  8. C#LeetCode刷题之#400-第N个数字(Nth Digit)

    问题 在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字. 注意:n 是正数且在32为整形范围内 ( n < 231). 输入:3 ...

  9. HDU1597 find the nth digit

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

最新文章

  1. 【Springboot】日志
  2. 查看linux主机是否安装宋体码,Linux 安装宋体字体的简单办法
  3. python调用libs.dbutil_Python 使用 PyMysql、DBUtils 创建连接池,提升性能
  4. Nagios安装与配置
  5. php过滤第一个逗号和最后一个逗号,PHP字符过滤函数去除字符串最后一个逗号(rtrim)...
  6. d3.js学习笔记--Mike Bostock: Thinking with Joins
  7. 2021年中国便利店发展报告
  8. 宁夏公安打传销端窝点为春节保平安
  9. 在职研究生和全日制研究生的区别_在职研究生和全日制研究生的区别?
  10. Chromedriver的安装
  11. Php 安装 zend_loader,在Linux系统中为PHP5.x安装Zend Guard Loader
  12. win7 IE9 internet explorer[IE] [IE 9]已停止工作
  13. oracle rac 清理log,Oacle rac架构监听日志清理
  14. pycharm导入opencv库失败解决方法
  15. mysql中存储过程和函数区别
  16. Inno Setup 6.0.0+ 繁体中文语言包
  17. 报童问题(3)-深入分析
  18. linux防火墙配置怎么修改密码,Linux系统修改防火墙配置
  19. FFT算法讲解——麻麻我终于会FFT了!
  20. 如何读懂接口服务器协议,一篇文章读懂什么是串口通信及其工作原理

热门文章

  1. EC20模块GPS功能的AT指令顺序
  2. 安卓项目实践——仿淘宝界面(二)——底部导航栏技术(Fragment实现)
  3. 无限乱斗机器人ap出装_LOL无限乱斗武器大师AP流攻略出装天赋详解
  4. 量子力学揭秘————量子的背景和提出以及理解笔记
  5. c语言编译收银软件,C语言超市收银系统
  6. 2016个人年终总结
  7. python把hdf转为tif_python_MODIS HDF数据转为tif并拼接图像
  8. 计算机原理汇编程序实验报告的总结,计算机组成原理及汇编实验报告
  9. DW_Pandas_Task2
  10. 关于电源锁:android之WakeLock机制浅析