本文主要是介绍2019牛客暑期多校训练营(第八场)- C - CDMA(构造),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:https://ac.nowcoder.com/acm/contest/888/C
题意:给你一个,,构造一个的矩阵,矩阵由和组成,并且矩阵的任意两行相乘的和为0。
思路:首先 时的答案已经知道,考虑用 构造出 的解,不妨设方阵为 的解,那么下面这个方阵则是 的一个解:。
#include <bits/stdc++.h>
using namespace std;
const int N = 1025;
int a[N][N];
int main()
{int n; scanf("%d",&n);a[1][1] = a[1][2] = a[2][1] = 1;a[2][2] = -1;for(int k = 2; k < n; k *= 2)for(int i = 1; i <= k; i++)for(int j = 1; j <= k; j++)a[i][j+k] = a[i+k][j] = a[i][j], a[i+k][j+k] = -a[i][j];for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)printf("%d%c",a[i][j], j == n ? '\n' : ' ');
}
这篇关于2019牛客暑期多校训练营(第八场)- C - CDMA(构造)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!