CF Gym 101810C

探讨了如何通过最少次数的二进制位翻转,从一个整数n出发找到小于n的最大整数m。利用观察和OEIS数据库揭示了翻转次数的规律,并给出了简洁的AC代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:C. Flip the Bits

 

题意:给一个整数n,将n的二进制翻转最少的次数得到数m,使m是小于n的数中尽可能最大的数。

 

题解:既然是要得到小于n的数中最大的数,那么将n变成n-1即可。然后枚举几个找规律。

  n:           1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26.......

翻转次数: 1 2 1 3 1 2 1 4 1  2   1   3   1   2   1   5   1   2   1   3   1   2   1   4   1   2........

可以发现奇数的翻转次数都是1,偶数的会有变化,但是我当时没找出来,所以一直WA,几天突然想到可以在OEIS中看看,然后就找到了(OEIS),其中有个公式是:a[2n+1]=1,a[2n]=1+a[n]

题目中n的范围是1....1e9,显然用数组存不了这么多的数据,所以只能直接运算输出结果,其实这个公式还是挺简单的,我的做法是对偶数进行除以2的循环操作,直到最后得到一个奇数。

 

AC代码:

//C
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int MAXN=1e5+10;
#define eps 1e-8
#define mem(a,b) memset(a,b,sizeof(b))
int main()
{
    ll t,n,ans;
    scanf("%lld",&t);
    while(t--)
    {
        scanf("%lld",&n);
        ans=1;
        if(n%2==0)//n为偶数
        {
            ll cnt=0;//统计能过除以2的次数
            while(n%2==0)
            {
                cnt++;
                n/=2;
            }
            ans+=cnt;//a[2n]=1+a[n],所以也就是每次都加的是1
        }
        printf("%lld\n",ans);
    }
    return 0;
}

 

PS D:\science research\deep learning\core codes and datas\rl_learning> pip list Package Version ------------------------- -------------- anyio 4.6.2.post1 argon2-cffi 23.1.0 argon2-cffi-bindings 21.2.0 arrow 1.3.0 asttokens 2.4.1 async-lru 2.0.4 attrs 24.2.0 babel 2.16.0 beautifulsoup4 4.12.3 bleach 6.2.0 certifi 2024.8.30 cffi 1.17.1 charset-normalizer 3.4.0 colorama 0.4.6 comm 0.2.2 contourpy 1.3.1 cycler 0.12.1 debugpy 1.8.9 decorator 5.1.1 defusedxml 0.7.1 executing 2.1.0 fastjsonschema 2.20.0 fonttools 4.55.3 fqdn 1.5.1 h11 0.14.0 httpcore 1.0.7 httpx 0.27.2 idna 3.10 imageio 2.36.1 imageio-ffmpeg 0.5.1 ipykernel 6.29.5 ipython 8.29.0 ipywidgets 8.1.5 isoduration 20.11.0 jedi 0.19.2 Jinja2 3.1.4 json5 0.9.28 jsonpointer 3.0.0 jsonschema 4.23.0 jsonschema-specifications 2024.10.1 jupyter 1.1.1 jupyter_client 8.6.3 jupyter-console 6.6.3 jupyter_core 5.7.2 jupyter-events 0.10.0 jupyter-lsp 2.2.5 jupyter_server 2.14.2 jupyter_server_terminals 0.5.3 jupyterlab 4.2.6 jupyterlab_pygments 0.3.0 jupyterlab_server 2.27.3 jupyterlab_widgets 3.0.13 kiwisolver 1.4.7 MarkupSafe 3.0.2 matplotlib 3.10.0 matplotlib-inline 0.1.7 mistune 3.0.2 nbclient 0.10.0 nbconvert 7.16.4 nbformat 5.10.4 nest-asyncio 1.6.0 notebook 7.2.2 notebook_shim 0.2.4 numpy 2.1.3 overrides 7.7.0 packaging 24.2 pandas 2.2.3 pandocfilters 1.5.1 parso 0.8.4 pillow 11.0.0 pip 24.3.1 platformdirs 4.3.6 prometheus_client 0.21.0 prompt_toolkit 3.0.48 psutil 6.1.0 pure_eval 0.2.3 pycparser 2.22 Pygments 2.18.0 pyparsing 3.2.0 python-dateutil 2.9.0.post0 python-json-logger 2.0.7 pytz 2024.2 pywin32 308 pywinpty 2.0.14 PyYAML 6.0.2 pyzmq 26.2.0 referencing 0.35.1 requests 2.32.3 rfc3339-validator 0.1.4 rfc3986-validator 0.1.1 rpds-py 0.21.0 Send2Trash 1.8.3 setuptools 75.6.0 six 1.16.0 sniffio 1.3.1 soupsieve 2.6 terminado 0.18.1 tinycss2 1.4.0 tornado 6.4.2 traitlets 5.14.3 types-python-dateutil 2.9.0.20241003 tzdata 2024.2 uri-template 1.3.0 urllib3 2.2.3 wcwidth 0.2.13 webcolors 24.11.1 webencodings 0.5.1 websocket-client 1.8.0 widgetsnbextension 4.0.13 PS D:\science research\deep learning\core codes and datas\rl_learning> pip install gym==0.18.3 Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting gym==0.18.3 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/1a/db/816fd52c0c196b6799e89d1f65b6c74fead2707cf7d447f3f354edfa7a44/gym-0.18.3.tar.gz (1.6 MB) Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> [3 lines of output] C:\Users\Zhang\AppData\Local\Temp\pip-build-env-ugk09oli\overlay\Lib\site-packages\setuptools\_distutils\dist.py:289: UserWarning: Unknown distribution option: 'tests_require' warnings.warn(msg) error in gym setup command: 'extras_require' must be a dictionary whose values are strings or lists of strings containing valid project/version requirement specifiers. [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. [notice] A new release of pip is available: 24.3.1 -> 25.1.1 [notice] To update, run: python.exe -m pip install --upgrade pip error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> See above for output. note: This error originates from a subprocess, and is likely not a problem with pip.
最新发布
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值