5 条题解

  • 0
    @ 2025-3-10 16:53:22

    思路:

    • 数字位于123到987之间;且不能重复;所以需要使用某种方式标记数字1-9是否被使用;
      • 用int充当位图来存储1-9是否完全覆盖;
    #include <iostream>
    using namespace std;
    int status = 0;
    /**
    * 将value每个位上的数字所对应的位置设置为1,表示存在;
    * eg. 3 ==> 0b1000;右移三位
    * param value: 数字
    */
    void set_bit(int value){
        while(value>0){
            status |= 1 << (value%10);
            value /=10;
        }
    }
    
    int main(){
        for(int i = 123; i < 333; ++i){
            set_bit(i);
            set_bit(i*2);
            set_bit(i*3);
            int ob = status & 0b1111111110;
            if(ob==0b1111111110){
                cout<<i<<" "<<i*2<<" "<<i*3<<endl;
            }
            status = 0;
        }
        return 0;
    }
    

    信息

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