1 条题解

  • 0
    @ 2025-8-24 22:35:32

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Elairin176
    AFOed(2021.10.23 - 2025.4.12)

    搬运于2025-08-24 22:35:32,当前版本为作者最后更新于2022-09-09 18:16:18,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    哇,这居然是我AC的第二道灰题
    题目链接:传送门

    预备知识:

    按位与:符号为 &\&,将两个数字的每一位二进制进行逻辑与操作,仅在两位全为 11 的时候为 11
    按位或:符号为 \mid,将两个数字的每一位二进制进行逻辑或操作,仅在两位全为 00 的时候为 00

    分析:

    这里我们设 bi,jb_{i,j} 的第 ii 位为 11 因为进行的是按位与操作,所以 aia_i 上所有 bi,jb_{i,j} 上为 11 的数位都会得到 11
    所以,我们对其进行反向操作,得出式子 ai=bi,jaia_i=b_{i,j}\mid a_i。简单一点,即 ai=bi,ja_i \mid =b_{i,j}

    CODE:

    #include <iostream>
    using namespace std;
    int n,b[1001][1001],a[1000];//题面所述。
    int main(void){cin>>n;//输入n
    for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>b[i][j],a[i]|=b[i][j];//输入b[i][j]并对a[i]进行操作
    for(int i=0;i<n;i++) cout<<a[i]<<" ";}//输出
    

    最后,点个赞再走吧~

    • 1

    信息

    ID
    7404
    时间
    1000ms
    内存
    64MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者