题解:P12188 [蓝桥杯 2025 省 Java A/研究生组] 变换数组

· · 题解

思路

实现一个函数计算十进制数 x 转化为二进制数有几个 1 即可,根据十进制转二进制的方法,容易写出,且范围较小,暴力可过。

代码

#include<iostream>
using namespace std;
int f(int n)
{
    int s=0;
    while(n){
        if(n%2) s++;
        n/=2;
    }
    return s;
}
int a[1145];
int main()
{
    int n,m;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    cin>>m;
    for(int i=1;i<=n;i++){
        int t=a[i];
        for(int j=1;j<=m;j++) t=t*f(t);
        cout<<t<<" ";
    }
    return 0;
}