hdu1597(二分查找)
来源:互联网 发布:mac豆沙色口红是几号 编辑:程序博客网 时间:2024/05/18 04:50
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
思路:这个题靠模拟是不行的,也无法找到规律,所以要用二分查找去求答案,先打表记录前面数加自己的和,对于给出的n我们只需要找到在表中哪个数的范围内(二分查找)然后减去表中前一个数的值再取9的余数,应该注意当余数为0时输出9;
代码:
#include<stdio.h>__int64 n,vag;__int64 a[65541]={0};void search(int l,int r){ int temp=(l+r)/2; if(a[temp]<n&&a[temp+1]>=n) { vag=temp; return; } if(a[temp]>=n) search(l,temp-1); else search(temp+1,r);}int main(){ int t; int i; for(i=1;i<=65540;i++) a[i]=a[i-1]+i; scanf("%d",&t); while(t--) { scanf("%I64d",&n); search(1,65536); if((n-a[vag])%9==0) { printf("9\n"); continue; } printf("%d\n",(n-a[vag])%9); }}
0 0
- hdu1597(二分查找)
- HDU1597二分查找
- hdu1597 find the nth digit(二分查找)
- hdu1597 简单二分
- HDU1597【二分瞎搞】
- HDU1597(二分)
- HDU1597
- hdu1597
- hdu1597
- HDU1597
- hdu1597
- 09-04 HDU_Steps4.1 二分三分 HDU2199 HDU2899 HDU1967 HDU2141 HDU2298 HDU1597 HDU2438 HDU3400
- hdu1597(规律)
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 高通msm8994启动流程简介
- [综合] 为什么要使用Unix时间戳
- datagrid 分页 条件 排序
- 如何提高APP的启动速度
- wifidog 源码初分析(4)
- hdu1597(二分查找)
- android shape的使用
- 260-e-Single Number III
- 排序算法之冒泡排序和选择排序
- CSS hack 技术
- Java 改进简单加法器实现(代码精简)
- kvm 虚拟化 virsh shutdown 无法关闭客户机
- oracle online redo log 日志组成员
- PHP实现多服务器共享SESSION数据-mysql实现