📌  相关文章
📜  C ++程序在K循环移位后将给定数组分成两半后使用按位或查找数组和(1)

📅  最后修改于: 2023-12-03 15:29:43.075000             🧑  作者: Mango

C++程序在K循环移位后将给定数组分成两半后使用按位或查找数组和

在这里我们将介绍一个C++程序,该程序将输入一个数组,以及一个整数k,然后对该数组进行k次循环移位,将数组分成两部分,然后使用按位或运算符(|)查找数组的和。

程序代码
#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n,k;
    cin>>n>>k;
    int a[n+1],b[n+1],c[n+1];//a为输入的数组,b和c表示经过循环移位后,数组分成两部分
    for(int i=0;i<n;++i)
    {
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n;++i)
    {
        b[(i+k)%n]=a[i];
    }//循环移位 
    for(int i=0;i<n;++i)
    {
        c[i]=b[i]|b[(i+1)%n];
        //使用按位或运算符(|)计算相邻两个数的和,结果存到c数组
    }
    int ans=0;
    for(int i=0;i<n;++i)
    {
        ans+=c[i];
    }
    cout<<ans<<endl;
    return 0;
}
代码解释
  • 第1行:我们包含了一个头文件bits/stdc++.h,这个头文件包含了所有C++标准库文件。
  • 第3-6行:这里定义了整数nk,然后密度定义了三个数组abc。数组a表示输入的数组,数组bc``表示循环移位后,数组分成的两部分。由于下标从0开始,所以数组bc的大小都是n+1`。
  • 第7-10行:这里通过循环输入了n个整数,这些整数存储在数组a中。
  • 第11-14行:这里进行了k次循环移位,具体过程是把a数组中的第i个元素移动到数组b(i+k)%n个位置上。
  • 第15-18行:这里使用按位或运算符(|)计算相邻两个数的和,将结果存储到c数组中。
  • 第19-22行:这里计算c数组中的和,结果存储在ans变量中,然后输出ans的值。
Markdown代码
# C++程序在K循环移位后将给定数组分成两半后使用按位或查找数组和

在这里我们将介绍一个C++程序,该程序将输入一个数组,以及一个整数k,然后对该数组进行k次循环移位,将数组分成两部分,然后使用按位或运算符(|)查找数组的和。

## 程序代码

```C++ 
#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n,k;
    cin>>n>>k;
    int a[n+1],b[n+1],c[n+1];//a为输入的数组,b和c表示经过循环移位后,数组分成两部分
    for(int i=0;i<n;++i)
    {
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n;++i)
    {
        b[(i+k)%n]=a[i];
    }//循环移位 
    for(int i=0;i<n;++i)
    {
        c[i]=b[i]|b[(i+1)%n];
        //使用按位或运算符(|)计算相邻两个数的和,结果存到c数组
    }
    int ans=0;
    for(int i=0;i<n;++i)
    {
        ans+=c[i];
    }
    cout<<ans<<endl;
    return 0;
}
代码解释
  • 第1行:我们包含了一个头文件bits/stdc++.h,这个头文件包含了所有C++标准库文件。
  • 第3-6行:这里定义了整数nk,然后密度定义了三个数组abc。数组a表示输入的数组,数组bc``表示循环移位后,数组分成的两部分。由于下标从0开始,所以数组bc的大小都是n+1`。
  • 第7-10行:这里通过循环输入了n个整数,这些整数存储在数组a中。
  • 第11-14行:这里进行了k次循环移位,具体过程是把a数组中的第i个元素移动到数组b(i+k)%n个位置上。
  • 第15-18行:这里使用按位或运算符(|)计算相邻两个数的和,将结果存储到c数组中。
  • 第19-22行:这里计算c数组中的和,结果存储在ans变量中,然后输出ans的值。