#1126. 二进制回文串

    ID: 1126 传统题 1000ms 256MiB 尝试: 3 已通过: 2 难度: 普及− 上传者: 标签>基础算法进制转换入门数组

二进制回文串

题目描述

对于一个正整数 nn,我们将其转换为不含前导零的二进制表示,如果这个二进制序列从左向右读与从右向左读完全相同,则称该数为二进制回文数

例如,99 的二进制表示为 (1001)2(1001)_2,是二进制回文数;而 1212 的二进制表示为 (1100)2(1100)_2,则不是二进制回文数。

你的任务是:给定一个正整数 nn,计算在 11nn 的范围内(包含 11nn),二进制回文数的数量。

输入格式

输入仅包含一行,一个正整数 nn

输出格式

输出一行,包含一个整数,表示在 11nn 的范围内二进制回文数的数量。

样例输入 1

15

样例输出 1

6

说明

样例解释

111515 的范围内,二进制回文数共有 66 个,分别是:

  • 1=(1)21 = (1)_2
  • 3=(11)23 = (11)_2
  • 5=(101)25 = (101)_2
  • 7=(111)27 = (111)_2
  • 9=(1001)29 = (1001)_2
  • 15=(1111)215 = (1111)_2

数据范围

  • 对于所有测试点,保证 1n1051 \le n \le 10^5
  • 保证所有的输入数值均为整数。