问题标题: 酷町堂:3873

1
0
已解决
胡家翊
胡家翊
高级守护
高级守护
#include<bits/stdc++.h>
using namespace std;
int a[100];
void gb(int n,m){
    int y=max(n,m);
    while(1){
        if(i%n==0&&i%m==0){
            cout<<i;
            break;
        }
        i++;
    } 
}
int main()
{
    long long n,m,x=1;
    cin>>n;
    int i=0,t=n;
    while(n){
        a[++i]=t%2; 
        t/=2;
    }
    for(int j=i;j>=1;j--){
        m+=a[j]*x;
        x*=10;
    }   
    gb(n,m);    
    return 0;
}

哪错了,求大佬帮忙 QAQ


0
1
陈振轩
陈振轩
高级光能
高级光能

emmm 

看不懂你发的,我来上思路吧

定义一个存储最多1的变量(如maxx),初值为0
之后定义一个存储最多1的a[i]的值的变量(如maxh)
先输入n个十进制数。
这个核心,就在输入这里
再输入a[i]时,使用j来存a[j]的值,不然就会被在转为2进制的时候变成0,然后使用cnt数组来存第i个二进制数的'1'的数量,所以使用以下代码
if (j % 2 == 1) {
                cnt[i]++;
}
之后,需要判断cnt[i]是否大于maxx代码如下:
if (cnt[i]>maxmath) {
            maxx = cnt[i];
            maxh = a[i];
        }
    }

之后,就可以输出maxx和maxh了

 

1
1
1
0
我要回答