两个二分 枚举位数

#include <bits/stdc++.h>
#define MOD 1000000007
using namespace std;
typedef long long ll;
ll ten[];
ll check1(ll x) {
ll ans = ;
ll l, r;
for (ll i = ; i <= ; i++) {
l = ten[i], r = ten[i + ] - ;
if (r < x) {
ans += i * ( * x - l - r) * (r - l + ) / ;
} else {
ans += i * (x - l) * (x - l + ) / ;
break;
}
}
return ans;
}
ll check2(ll x) {
ll ans = ;
ll l, r;
for (ll i = ; i <= ; i++) {
l = ten[i], r = ten[i + ] - ;
if (r <= x) {
ans += i * (r - l + );
} else {
ans += i * (x - l + );
break;
}
}
return ans;
}
int main () {
ten[] = ;
for (int i = ; i <= ; i++) {
ten[i] = ten[i - ] * 10LL;
}
int Q;
scanf("%d", &Q);
while (Q--) {
ll n;
scanf("%lld", &n);
ll l = , r = 1e9, mid;
while (l < r - ) {
mid = (l + r) >> ;
if (check1(mid) < n) {
l = mid;
} else {
r = mid;
}
}
n -= check1(r - );
if (n == ) {
printf("%d\n", (r - ) % );
continue;
}
l = ;
r = 1e9;
while (l < r - ) {
mid = (l + r) >> ;
if (check2(mid) < n) {
l = mid;
} else {
r = mid;
}
}
n -= check2(r - );
int len = ;
ll xxx = r, xxxx = r;
while (xxx > ) {
xxx /= 10LL;
len++;
}
len -= n;
if (len < ) {
continue;
}
while (len--) {
xxxx /= ;
}
printf("%lld\n", xxxx % );
}
}

Codeforces 1216E2 枚举位数+二分的更多相关文章

  1. [Codeforces 1199C]MP3(离散化+二分答案)

    [Codeforces 1199C]MP3(离散化+二分答案) 题面 给出一个长度为n的序列\(a_i\)和常数I,定义一次操作[l,r]可以把序列中<l的数全部变成l,>r的数全部变成r ...

  2. Codeforces 807C - Success Rate(二分枚举)

    题目链接:http://codeforces.com/problemset/problem/807/C 题目大意:给你T组数据,每组有x,y,p,q四个数,x/y是你当前提交正确率,让你求出最少需要再 ...

  3. Codeforces 801C Voltage Keepsake(二分枚举+浮点(模板))

    题目链接:http://codeforces.com/contest/801/problem/C 题目大意:给你一些电器以及他们的功率,还有一个功率一定的充电器可以给这些电器中的任意一个充电,并且不计 ...

  4. Codeforces 912 E.Prime Gift (折半枚举、二分)

    题目链接:Prime Gift 题意: 给出了n(1<=n<=16)个互不相同的质数pi(2<=pi<=100),现在要求第k大个约数全在所给质数集的数.(保证这个数不超过1e ...

  5. Codeforces 912E Prime Gift ( 二分 && 折半枚举 && 双指针技巧)

    题意 : 给你 N ( 1 ≤ N ≤ 16 ) 个质数,然后问你由这些质数作为因子的数 ( 此数不超 10^18 ) & ( 不一定需要其因子包含所给的所有质数 ) 的第 k 个是什么 分析 ...

  6. Codeforces 888E:Maximum Subsequence(枚举,二分)

    You are given an array a consisting of n integers, and additionally an integer m. You have to choose ...

  7. Codeforces 660C - Hard Process - [二分+DP]

    题目链接:http://codeforces.com/problemset/problem/660/C 题意: 给你一个长度为 $n$ 的 $01$ 串 $a$,记 $f(a)$ 表示其中最长的一段连 ...

  8. Educational Codeforces Round 61 D 二分 + 线段树

    https://codeforces.com/contest/1132/problem/D 二分 + 线段树(弃用结构体型线段树) 题意 有n台电脑,只有一个充电器,每台电脑一开始有a[i]电量,每秒 ...

  9. Codeforces - 773A - Success Rate - 二分 - 简单数论

    https://codeforces.com/problemset/problem/773/A 一开始二分枚举d,使得(x+d)/(y+d)>=p/q&&x/(y+d)<= ...

随机推荐

  1. admin源码分析

    django settings 源码分析 导入settingso模块,进入源码,会发现settings是一个 单例 LazySettings类实例化产生的一个对象,LazySettings实例化后就会 ...

  2. 阅读随笔 Spring、Mybatis

    一.<Spring+Mybatis 企业应用实战>(第2版本) 本书讲解了Spring.Mybatis及Spring+MyBatis 工作中的常用方法,没有太深入的原理性讲解,介绍 “如何 ...

  3. 什么是sigmoid激活函数?

    上面我们讲了引入激活函数的意义,激活函数有多种,下面我们拿一种激活函数sigmoid来做示例,其他的类似.sigmoid函数表达式如下: ​ 它的函数曲线图是: ​ 看到上面的函数曲线图,可以看出是一 ...

  4. 性能优化-屏幕常亮与CPU唤醒

    Android在不使用的时候,屏幕在一段时间以后会变暗,再过一段时间就会熄屏,此时CPU就会休眠,那么在这个时候,Timer.Handler.Thread.Service等都会暂停,有时候我们需要屏幕 ...

  5. POJ 3613 Cow Relays【k边最短路】

    题目链接:http://poj.org/problem?id=3613 题目大意: 给出n头牛,t条有向边,起点以及终点,限制每头牛放在一个点上,(一个点上可以放多头牛),从起点开始进行接力跑到终点, ...

  6. Docker 安装 Tomcat

    查找Docker Hub上的tomcat镜像 docker search tomcat 取官方的镜像 docker pull tomcat 使用tomcat镜像 创建目录tomcat,用于存放后面的相 ...

  7. javascript学习笔记 BOM和DOM详解

    js组成 我们都知道, javascript 有三部分构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他的浏览器风格迥异. 1. DOM 是 W ...

  8. [转帖]GNU/Linux与开源文化的那些人和事

    GNU/Linux与开源文化的那些人和事 时间:2015-09-24   作者:admin 分类:新手入门 阅读:167次 http://embeddedlinux.org.cn/emb-linux/ ...

  9. 1.3.4 Fork/Join框架

    package com.study.forkjoin; import java.util.ArrayList; import java.util.List; import java.util.conc ...

  10. H5网页唤醒app,判断app安装

    在阅读本文之前你首先应该对js有基本对掌握,并且对Scheme,intent有一定的理解.更多的是代码 上午给朋友做了一个产品引导页,但是需要判断ios系统的TestFlight是否安装,进行了goo ...