地址:http://codeforces.com/contest/768/problem/B

题目:

B. Code For 1
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Jon fought bravely to rescue the wildlings who were attacked by the white-walkers at Hardhome. On his arrival, Sam tells him that he wants to go to Oldtown to train at the Citadel to become a maester, so he can return and take the deceased Aemon's place as maester of Castle Black. Jon agrees to Sam's proposal and Sam sets off his journey to the Citadel. However becoming a trainee at the Citadel is not a cakewalk and hence the maesters at the Citadel gave Sam a problem to test his eligibility.

Initially Sam has a list with a single element n. Then he has to perform certain operations on this list. In each operation Sam must remove any element x, such that x > 1, from the list and insert at the same position  sequentially. He must continue with these operations until all the elements in the list are either 0 or 1.

Now the masters want the total number of 1s in the range l to r (1-indexed). Sam wants to become a maester but unfortunately he cannot solve this problem. Can you help Sam to pass the eligibility test?

Input

The first line contains three integers nlr (0 ≤ n < 250, 0 ≤ r - l ≤ 105, r ≥ 1, l ≥ 1) – initial element and the range l to r.

It is guaranteed that r is not greater than the length of the final list.

Output

Output the total number of 1s in the range l to r in the final sequence.

Examples
input
7 2 5
output
4
input
10 3 10
output
5
Note

Consider first example:

Elements on positions from 2-nd to 5-th in list is [1, 1, 1, 1]. The number of ones is 4.

For the second example:

Elements on positions from 3-rd to 10-th in list is [1, 1, 1, 0, 1, 0, 1, 0]. The number of ones is 5.

思路:因为r-l<=1e5,所以可以求出l,r中每个数的值,然后求和。

  求值的时候,可以通过不断对称求出,就像一张纸可以不断对折。(画出那棵树你就能看出规律了)。

  O((r-l)logn)

 #include <bits/stdc++.h>

 using namespace std;

 #define MP make_pair
#define PB push_back
typedef long long LL;
typedef pair<int,int> PII;
const double eps=1e-;
const double pi=acos(-1.0);
const int K=1e6+;
const int mod=1e9+; LL n,l,r,ans;
LL a[],p[],sum; int sc(LL x,int t)
{
while(p[t]!=x)
{
if(x>p[t]) x=p[t]*-x;
t--;
}
return a[sum-t];
} int main(void)
{
p[]=;
cin>>n>>l>>r;
while(n>)
a[sum++]=n%,n/=,p[sum]=p[sum-]*;
if(n!=)
a[sum]=;
for(LL i=l;i<=r;i++)
ans+=sc(i,sum);
cout<<ans<<endl;
return ;
}

最新文章

  1. Random随机类(11选5彩票)BigInteger大数据类(华为面试题1000的阶乘)
  2. 仓储管理系统500bug记录一下mysql 8小时超时解决办法
  3. jQuery判断checkbox是否选中的3种方法
  4. out与ref的区别
  5. 实现在Android 进程和线程
  6. Linux 下一个很棒的命令行工具
  7. .Net中JS调用后台的方法
  8. 更改JENKINS主目录
  9. Vagrant网络配置
  10. 利用try-catch判断变量是已声明未声明还是未赋值
  11. UIImage分类:返回一个可以拉伸的图片
  12. SQL SERVER将多行数据合并成一行(转载)
  13. [leetcode-357-Count Numbers with Unique Digits]
  14. Spark组件
  15. mybatis-spring最新版下载地址
  16. 关于webp图片格式初探
  17. php树形结构数组转化
  18. iOS开发-应用管理
  19. Nexus 按项目类型分配不同的工厂来发布不同 项目
  20. Python调用打印机参考例子

热门文章

  1. Hadoop1.2.1 日志格式说明及启停方式
  2. Python tushare 初步了解
  3. python练习题-3
  4. tomcat自动加载class
  5. nginx的简单使用和使用nginx在windows上搭建tomcat集群
  6. 170406、用uid分库,uname(用户名)上的查询怎么办
  7. Spring的AOP-----HelloWord
  8. VC 常用资源
  9. The Personal Touch Client Identification 个性化接触 客户识别
  10. 1.1 VGA(图像显示卡),Graphics Card(图形加速卡),Video Card(视频加速卡),3D Accelerator Card 和 GPU(图形处理器)