一**
1
**
第一题
第一题很简单,只是读题慢了一点,他说给一个n,然后需要给出一个长度为n的数组,要求数组和能整除n,所以只要输出 n个1
就行`
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
#define ll long long
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=1;i<n;i++)
{
cout<<"1 ";
}
cout<<1<<endl;
}
}
2
第二题
题目要求需要
就是看看能不能几个加起来相等,具体看图片吧,不写了
很神奇,可以根据题目推出,如果存在两个相等的,就直接输出就行;繁殖不存在的话,那就很麻烦了,你就根本输出不出来这样的,就根本找不到,你不信试一下,因为,如果不存在两个相等的,那么也就是没有两个1
,那么的话就凑不出来任何一个2^m;
By smallharder, contest: Codeforces Round #682 (Div. 2), problem: (B) Valerii Against Everyone, Accepted, #, Copy
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3+ 10;
#define ll long long
int a[maxn];
int main()
{
int t;
cin>>t;
int n;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
bool flag=false;
sort(a+1,a+1+n);
for(int i=2;i<=n;i++)
{
if(a[i]==a[i-1])
{
flag=true;
break;
}
}
if(flag)
cout<<"YES"<<endl;
else
{
cout<<"NO"<<endl;
}
}
}
这里找两个相等的,直接排序找就行。
3
第三题
给你一个矩阵,要求构造一个新的矩阵,新矩阵的元素要么等与原矩阵对应位置的,要么是矩阵原位置元素+1;
啊,想了将近1个多小时,傻了,只要判断奇偶性就行,哎;奇偶奇偶,然后下一行反过来就行。
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e2 + 10;
#define ll long long
ll a[maxn][maxn];
bool judge[maxn][maxn];
int main()
{
int t;
cin >> t;
int n, m;
while (t--)
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
cin >> a[i][j];
}
}
for (int i = 1; i <= n; i++)
{
if (0 == i % 2)
{
int flag1=1;
for (int j = 1; j <= m; j++)
{
if(flag1%2==0)
{
if(a[i][j]%2==1)
a[i][j]++;
}
else
{
if(a[i][j]%2==0)
a[i][j]++;
}
flag1++;
}
}
else
{
int flag1=1;
for (int j = 1; j <= m; j++)
{
if(flag1%2==0)
{
if(a[i][j]%2==0)
a[i][j]++;
}
else
{
if(a[i][j]%2==1)
a[i][j]++;
}
flag1++;
}
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j < m; j++)
{
cout << a[i][j] << " ";
}
cout << a[i][m] << endl;
}
}
}
4
第四题
就是在n步操作内,可以让所有数相等。每一步操作就是找三个数,按顺序异或,这三个数就变成异或后的数。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int num[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>num[i];
}
if(n%2){
cout<<"YES"<<endl<<n-1<<endl;
for(int i=2;i<=n;i+=2){
cout<<"1 "<<i<<" "<<i+1<<endl;
}
for(int i=2;i<=n;i+=2){
cout<<"1 "<<i<<" "<<i+1<<endl;
}
}else{
int xor_n=0;
for(int i=1;i<=n;i++) xor_n^=num[i];
if(xor_n==0){
cout<<"YES"<<endl<<n-2<<endl;
for(int i=2;i<n;i+=2){
cout<<"1 "<<i<<" "<<i+1<<endl;
}
for(int i=2;i<n;i+=2){
cout<<"1 "<<i<<" "<<i+1<<endl;
}
}else{
cout<<"NO"<<endl;
}
}
return 0;
}