当前位置:首页 > 题解目录 > 正文内容

【题解】变换数组

亿万年的星光2个月前 (04-18)题解目录340

【题目描述】

输入一个数组 a,包含有 n 个元素 a1,a2,⋯,an。对这个数组进行 m 次变换,每次变换会将数组 a 中的每个元素 ai 转换为 ai⋅bitCount(ai)。其中 bitCount(x) 表示数字 x 的二进制表示中 1 出现的次数,例如 bitCount(3)=2,因为 3 的二进制表示为 11,其中 1 出现了两次。

请输出变换之后的数组内容。

【输入描述】

输入的第一行包含一个正整数 n,表示数组 a 中的元素个数。

第二行包含 n 个整数 a1,a2,⋯,an,相邻整数之间使用一个空格分隔。

第三行包含一个整数 m,表示变换次数。

【输出描述】

输出一行,包含 n 个整数,相邻整数之间使用一个空格分隔,表示变换之后得到的数组 a。

【样例输入】

2
5 7
2

【样例输出】

20 63

【样例说明】

  • ,第一次变化后 

  • ,第二次变换后 

【数据范围】

对于30%的数据,1<=n<10

对于60%的数据,1<=n<=100

对于100%的数据,1<=n<=100, 0<=m<=5,0<=ai<=1000



【题目分析】

转成二进制,统计 1 个数。


【参考答案】

#include<bits/stdc++.h>
using namespace std;
int a[1005];
int num(int x){
    int cnt=0;
    while(x>0){
        x=x&(x-1);
        cnt++;
    }
    return cnt;
}
int main(){
    int n,m;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    cin>>m;
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            a[j]=a[j]*num(a[j]);
        }
    }
    for(int j=1;j<=n;j++){
        cout<<a[j]<<" ";
    }
    cout<<endl;
    return 0;
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

简单算术表达式求值

【题目描述】 两位正整数的简单算术运算(只考虑整数运算),算术运算为:+,加法运算;    -,减法运算;   &nbs...

线段

题目描述在一个数轴上有n条线段,现选取其中k条线段使得这k条线段两两没有重合部分,问最大的k为多少?输入格式第一行为一个正整数n,下面n行每行2个数字ai,bi,描述每条线段。输出格式输出文件仅包括1...

【题解】真分数(2019青岛市程序设计竞赛)

【描述】真分数,指的是分子比分母小的分数,真分数的分数值小于1。给出n个正整数,任取两个数分别作为分子和分母组成真分数。求能组成多少不同值的真分数。【输入】第一行是一个正整数n。第二行是n个不同的正整...

【题解】最大配对

题目描述      给出2个序列A={a[1],a[2],…,a[n]},B={b[1],b[2],…,b[n]},从A、B中各选出n个元素进行一一配对(可以不按照原来在...

【题解】最大公约数(2019青岛市程序设计竞赛)

【问题描述】给定n,以及正整数序列a1,a2,…,an与b1,b2,…,bn。令:sa=a1*a2*…*ansb=b1*b2*…*bn求sa和sb的最大公约数gcd(sa,sb)。【输入】第一行n。第...

【题解】结构体与闰年

【题目描述】定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。【输入描述】年月日【输出描述】当年第几天【样例输入】2000 12 31【样例输出】366...