Ural 1209
来源:互联网 发布:淘宝荣耀旗舰店可靠吗 编辑:程序博客网 时间:2024/06/10 07:19
链接:ural 1209
题意:有一个形如110100100010000…的字符串,给出N(1 ≤ N ≤ 65535)组问题,每一组读入Ki (1 ≤ Ki ≤ 2^31 − 1), 要求输出字符串的第Ki位数字为多少。
思路:这是一道比较裸的二分题目,利用数列的知识,计算Ki属于10^m中,即(1+2+…+m) >= Ki , 而(1+2+…+(m-1)) < Ki即可,若Ki=1时进行特殊判断。
代码:
#include <iostream>using namespace std;bool check(long long x) { if (x == 1) return 1; long long l = 1, r = x, mid; long long k = 0; while (l <= r) { mid = (l+r)/2; long long t = (mid+1)*mid/2; if (t <= x) { if (mid > k) k = mid; l = mid+1; } else r = mid-1; } long long t = (k+1)*k/2+1; if (t == x) return true; return false;}int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { long long x; cin >> x; if (check(x)) cout << 1 << endl; else cout << 0 << endl; }}
0 0
- Ural 1209
- URAL
- 【ural】
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- 线程池的使用
- Java EE -> Xml [QR]
- 《生活日志》
- HTTP协议详解(真的很经典)
- 如何去掉ListView底部的ListDivider
- Ural 1209
- eclipse的pydev支持
- 自动适配 使用masonry 第三方
- spring常用注解
- AppPay
- B. Finding Team Member
- 169. Majority Element
- 遍历List时 删除元素
- MySQL 1045 登录失败