📅  最后修改于: 2023-12-03 15:29:43.075000             🧑  作者: Mango
在这里我们将介绍一个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;
}
bits/stdc++.h
,这个头文件包含了所有C++标准库文件。n
和k
,然后密度定义了三个数组a
,b
和c
。数组a
表示输入的数组,数组b
和c``表示循环移位后,数组分成的两部分。由于下标从0开始,所以数组
b和
c的大小都是
n+1`。n
个整数,这些整数存储在数组a
中。k
次循环移位,具体过程是把a
数组中的第i
个元素移动到数组b
的(i+k)%n
个位置上。c
数组中。c
数组中的和,结果存储在ans
变量中,然后输出ans
的值。# 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;
}
bits/stdc++.h
,这个头文件包含了所有C++标准库文件。n
和k
,然后密度定义了三个数组a
,b
和c
。数组a
表示输入的数组,数组b
和c``表示循环移位后,数组分成的两部分。由于下标从0开始,所以数组
b和
c的大小都是
n+1`。n
个整数,这些整数存储在数组a
中。k
次循环移位,具体过程是把a
数组中的第i
个元素移动到数组b
的(i+k)%n
个位置上。c
数组中。c
数组中的和,结果存储在ans
变量中,然后输出ans
的值。