1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

定义回顾:把正整数写成二进制(无前导 0)。若其中 1 的个数等于 0 的个数,则称为完美数。 设总位数为 L,则必须有 L 为偶数,且 #1 = #0 = L/2。同时最高位必须为 1(无前导 0)。

核心观察

  1. 任意完美数的二进制长度一定是偶数 L=2k,并且最高位为 1、总 1 的个数为 k。
  2. 对于固定长度 2k,最小的完美数是把除最高位外的 (k-1) 个 1 全放在最低位:

P3884.第3题-小C的完美数

    1000ms Tried: 40 Accepted: 9 Difficulty: 5 所属公司 : 携程
    算法与标签>贪心算法

题目内容

给定一个正整数的二进制表示(不含前导 000 )中,111 的个数为 nnn ,000 的个数为 mmm 。

若满足 m=nm=nm=n

则称该整数为完美数。

现给定一个整数 xxx ,请找出大于等于 xxx 的最小完美数。

【名词解释】

  • 二进制表示:二进制表示指将一个正整数按基数 222 形式书写,不含前导零。例如,555 的进制表示为 (101)2(101)_2(101)2​ 。

  • 完美数:完美数指其二进制表示中 111 的个数与 000 的个数相等。

输入描述

每个测试文件均包含多组测试数据。第一行输入一个整数 T(1≤T≤105)T(1≤T≤10^5)T(1≤T≤105) 代表数据组数,每组测试数据描述如下:

每行输入一个整数 x(1≤x≤109)x(1≤x≤10^9)x(1≤x≤109) 。

输出描述

对于每,组测试数据,新起一行,输出一个整数,表示不小于 xxx 的最小完美数。

样例1

输入

6
1
2
3
4
5
6

输出

2
2
9
9
9
9

说明

  • 当 x=1x=1x=1 时,最小完美数为 222 (二进制 (10)2(10)_2(10)2​ ,中 1,01,01,0 均为 111 )。

  • 当 x=2x=2x=2 时,最小完美数为 222 。

  • 当 3≦x≦63≦x≦63≦x≦6 时,最小完美数为 999 (二进制 (1001)2(1001)_2(1001)2​,中 1,01,01,0 均为 222 )。

样例2

输入

3
8
9
10

输出

9
9
10

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 1, 53ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?