从左往右处理,左半部分记为left, 右半部分记为right,若i,i -1均为1, 贡献为ans += (left + 1) + right * (1ll << (i - 1));

否则贡献为ans += right * (1ll << (i - 1));

import java.math.BigInteger;
import java.util.Scanner;
public class Main{public static void main(String[] args){Scanner cin = new Scanner(System.in);int t = 0;while(cin.hasNext()){BigInteger n = cin.nextBigInteger();if(n.compareTo(BigInteger.ZERO) < 0){break;}long cnt = n.toString(2).length();BigInteger right = n.shiftRight(2), left = BigInteger.ZERO;BigInteger ans = BigInteger.ZERO;for(long i = 1; i < cnt; i++){if(n.testBit((int)i) && n.testBit((int)i - 1)){ans = ans.add(left.add(BigInteger.ONE)).add(right.multiply(BigInteger.ONE.shiftLeft((int)i - 1)));//ans += (left + 1) + right * (1ll << (i - 1));}else{ans = ans.add(right.multiply(BigInteger.ONE.shiftLeft((int)i - 1)));//ans += right * (1ll << (i - 1));}right = right.shiftRight(1);if(n.testBit((int)i - 1)){left = left.add(BigInteger.ONE.shiftLeft((int)i - 1));}//left |= n & (1ll << (i - 1));}System.out.printf("Case %d: ", ++t);System.out.println(ans);}System.exit(0);}}

  

转载于:https://www.cnblogs.com/IMGavin/p/6024003.html

UVA 11645 Bits(组合数学)相关推荐

  1. UVA - 11806 Cheerleaders(组合数学+容斥原理)

    题目链接:点击查看 题目大意:给出一个n*m的矩阵,现在有k个拉拉队员,要求在第一列.最后一列.第一行和最后一行至少有一个拉拉队员,注意以下要求: 四个角上的拉拉队员可以同时属于两条边 每个方格至多只 ...

  2. Uva - 12545 - Bits Equalizer

    刚開始想了一个变换顺序,模拟进行操作.写了浩浩荡荡200多行最后WA了,感觉还是方法不正确...后来从仅仅能0变1,不能1变0入手,应该先满足上1下0的情况,其它的三种情况用简单的变换就能够了. 先用 ...

  3. uva 12545——Bits Equalizer

    题意:给定两个等长的串s和t,其中s串包括0,1,?,T包含0,1,每次可以把s中的0变成1或者交换任意两个数或者?变成任意01.求由s到t的最小步数. 思路:杂.所有带?的都要变成0或则1,那么至少 ...

  4. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  5. even parity

    转自http://www.acmerblog.com/uva-11464-even-parity-4653.html 这道题的算法实现态变态了,奇妙的技巧,至少我是这样认为的.我想了很久也不会,书上代 ...

  6. php 输出json 中文转unicode,PHP json_encode中文unicode转码问题

    用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似"\u***"的格式,如果想汉字不进行转码,这里提供三种方法 1.升级PHP,在PHP5. ...

  7. UVA 10910 Marks Distribution(组合数学 或 递推)

    题意:一个人N门课程的总成绩为T,每门课程的最低成绩为P,求一共有多少种可能的分配方法. 题解:可以先求出超出的部分 T = T - n*p:剩余的相当于n个里面每个科目放0,1分等. 这题我只懂了递 ...

  8. UVa 10943 How do you add? (组合数学)

    10943 - How do you add? Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_on ...

  9. UVA 11481 Arrange the Numbers(组合数学 错位排序)

    题意:长度为n的序列,前m位恰好k位正确排序,求方法数 前m位选k个数正确排,为cm[m][k],剩余m - k个空位,要错排,这m - k个数可能是前m个数中剩下的,也可能来自后面的n - m个数 ...

最新文章

  1. 洛谷 3519 bzoj 2213 Difference
  2. ArcGIS Server 9.2 on Solaris/Linux 安装可能出现的问题
  3. gnuplot_i 文件的说明,翻译成的中文
  4. 软件测试——性能测试、压力测试、负载测试等详解
  5. 【Java】Base64编码与解码
  6. MySQL latch小结
  7. 如何判断python是否安装成功_python怎么判断模块安装完成
  8. 如何用Eclipse进行单元测试
  9. 课程设计 计算机公共基础,基于Moodle的大学计算机公共基础课程设计.pdf
  10. topsis法_华北电力大学 梁海平 , 刘英培等:基于改进TOPSIS灰色关联投影法的主网网架结构评价...
  11. pc恶意程序木马分析 启动流程 逆向分析 数据解密
  12. 机器智能正在代替人类做的5件事
  13. 大工邮箱收件服务器,Outlook 2010 设置邮箱详细步骤
  14. Elasticsearch7.17 二:mapping映射和高级语法查询DSL
  15. OSChina 周五乱弹 —— duang ~ duang ~ duang~
  16. COCOS-BCX|区块链项目介绍
  17. 怎么将计算机的触摸鼠标锁定,戴尔笔记本触摸鼠标怎么锁定
  18. 工业设计软件主要代表
  19. 释疑:SI-RNTI,C-RNTI,P-RNTI,RA-RNTI,SPS-RNTI
  20. 6-4 学生成绩链表处理(20 分)

热门文章

  1. python代码规范链接
  2. c将字符串拆分,并存入结构体
  3. Windows下phpStudy中的Apache无法启动的排查方法
  4. activiti主要API对象
  5. IntelliJ IDEA sass环境配置及常见报错处理
  6. 【Java】Calendar获取年、月、日、时间
  7. IOS第四天-新浪微博 -存储优化OAuth授权账号信息,下拉刷新,字典转模型
  8. 好记心不如烂笔头之jQuery学习,第一章
  9. .net 使用 Aspose.Words 进行 Word替换操作
  10. sqlserver中int 类型的字段,值为null的时候引发一个问题