zoukankan      html  css  js  c++  java
  • 扩展二进制

    今天被拓展二进制搞了再见    可怜我还做题时 还说这题一定不是数位dp直接被打脸了






    #1331 : 扩展二进制数

    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    我们都知道二进制数的每一位可以是0或1。有一天小Hi突发奇想:如果允许使用数字2会发生什么事情?小Hi称其为扩展二进制数,例如(21)ii = 2 * 21 + 1 = 5, (112)ii = 1 * 22 + 1 * 21 + 2 = 8。

    很快小Hi意识到在扩展二进制中,每个数的表示方法不是唯一的。例如8还可以有(1000)ii, (200)ii, (120)ii 三种表示方法。

    对于一个给定的十进制数 N ,小Hi希望知道它的扩展二进制表示有几种方法?

    输入

    一个十进制整数 N。(0 ≤ N ≤ 1000000000)

    输出

    N的扩展二进制表示数目。

    样例输入
    8
    样例输出
    4
     

     qaq QAQ  仔细想想 其实把搜索这个过程倒过来就行了


     我们不要正着枚举  倒着枚举

       

       下面我们进行枚举数值为n的最后一位数值的值


        如果 我们枚举 n的最后一位是 0 那么n的值应该为 ××××0 

           下面我们要继续 倒着枚举 ××××  而这个××××和  n 的值 然后是二倍关系 问题转换为 枚举(n/2)的最后一位

        如果 我们枚举 n的最后一位是 2 那么n的值应该为 ××××2 
           下面我们要继续 倒着枚举 ××××  而这个××××和 n-2的值 然后是二倍关系 问题转换为 枚举(n-2)/2的最后一位

        如果 我们枚举 n的最后一位是 1 那么n的值应该为 ××××1 
           下面我们要继续 倒着枚举 ××××  而这个××××和 n-1的值 然后是二倍关系 问题转换为 枚举(n-1)/2的最后一位

      对于数字n 这个数值是确定的 
         对于这个数值 他的最后一位 有两种情况
           如果n是偶数的话 那么它的最后一位 要么是2 要么是 0
           如果n是奇数的话 那么它的最后一位 只能是1
         所以 n是偶数的话 他们的可以枚举的种类数是  最后一位是2和最后一位是0的种类和
         所以 n是奇数的话 他们的可以枚举的种类数是  最后一位是1的种类

      对于n等于0时 答案数就是1
     
    图片
  • 相关阅读:
    【BZOJ 4151 The Cave】
    【POJ 3080 Blue Jeans】
    【ZBH选讲·树变环】
    【ZBH选讲·拍照】
    【ZBH选讲·模数和】
    【CF Edu 28 C. Four Segments】
    【CF Edu 28 A. Curriculum Vitae】
    【CF Edu 28 B. Math Show】
    【CF Round 439 E. The Untended Antiquity】
    【CF Round 439 C. The Intriguing Obsession】
  • 原文地址:https://www.cnblogs.com/DWVictor/p/10283171.html
Copyright © 2011-2022 走看看