A.水题
题意:就是给你N个数,然后这些数的和跟乘积都不能为0,你能执行的操作为每次给数组中任意一个数加一,然后问最少你要执行多少次操作。
思路:不能出现零,出现零,乘积就为0了,所有有多少个零就得执行多少次。加上这些数后,如果sum正好等于0,那么需要在执行一次操作!
代码语言:javascript复制#include <bits/stdc .h>
using namespace std;
typedef long long ll;
int a[105];
int main()
{
int t;
cin >>t;
while(t--)
{
int n;
cin >>n;
ll sum=0;
int flag=0;
for(int i=0;i<n;i )
{
cin >>a[i];
sum =a[i];
if(a[i]==0) flag ;
}
sum =flag;
if(sum==0) flag ;
cout <<flag<<endl;
}
}
B. 题意:就是给一组数据代表能力值不同的学生,你是校长,需要将他们分到两个班级,人数不一定要相等,求实力差最小是多少
题意:题目一开始就给提示了,我一开始没在意!
代码语言:javascript复制#include<bits/stdc .h>
using namespace std;
const int maxn = 2e5 5;
int a[maxn];
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
for(int i=1;i<=2*n;i ){
cin>>a[i];
}
sort(a 1,a n*2 1);
cout<<a[n 1]-a[n]<<endl;
}
return 0;
}
C 题意:Anu定义了一个函数如下: f(x,y)=(x|y)−y 然后给一组数据,求怎么个顺序能使得到的得到的结果最大 A value of an array [a1,a2,…,an] is defined as f(f(…f(f(a1,a2),a3),…an−1),an)
WWWWW
代码语言:javascript复制#include <bits/stdc .h>
#define maxn 100005
using namespace std;
typedef long long ll;
ll a[maxn];
ll vis[50];
int main(){
int n;
int ans;
int mid;
cin >> n;
for(ll i=1;i<=n;i ){
cin>>a[i];
for (ll l=0;l<32;l ){
if ((a[i] >> l) & 1)
vis[l] ;
}
}
for(ll i=1;i<=n;i ){
ll flag = 0;
for(ll l=0;l<32;l ){
if(vis[l]==1&&((a[i]>>l)&1))
flag=flag (1ll << l);
if(ans<flag)
ans=flag,mid=i;
}
}
swap(a[1],a[mid]);
for (ll i=1;i<=n;i )
cout<<a[i]<<" ";
return 0;
}