牛客多校第八场 C

图片说明
图片说明

  • 题意:
  • 构造题,输入m,m是2的次方,
  • 输出m行m列的矩阵,要求任意俩行的相加结果为0.
  • 题解:
  • 没有做过多少构造题,规律也找麻烦了,不知道怎么写
  • 这里首先考虑最小的2*2的矩阵为
  • 1 1
  • 1 -1
  • m m
  • m -m
  • 可以令m = 1
  • 那么转移到4*4里就成了
  • 1 1 1 1
  • 1 -1 1 -1
  • 1 1 -1 -1
  • 1 -1 -1 1
  • m m m m
  • m -m m -m
  • m m -m -m
  • m -m -m m
  • 不知道大家找到规律了吗
  • 设a的解为m
  • 那么2a的解就是
  • m m
  • m -m
  • 递归求解。
  • 代码:
    #include <bits/stdc++.h>
    using namespace std;
    int a[1030][1030];
    void solve(int n)
    {
      if(n == 2){
          return ;
      }
      solve(n>>1);
      int x = n>>1;
      for(int i=1;i<=x;i++)
      {
          for(int j=1;j<=x;j++)
          {
              a[i][j+x] = a[i][j];
              a[i+x][j] = a[i][j];
              a[i+x][j+x] = -a[i][j];
          }
      }
    }
    int main()
    {
      int n;
      cin>>n;
      a[1][1] = 1,a[1][2] = 1,a[2][1] = 1,a[2][2] = -1;
      solve(n);
      for(int i=1;i<=n;i++){
          for(int j=1;j<=n;j++){
              if(j != 1)
                  cout<<" ";
              cout<<a[i][j];
          }cout<<endl;
      }
      return 0;
    }
全部评论

相关推荐

01-02 00:50
三峡大学 Java
程序员牛肉:这简历一出手就离失业不远了。 作为一家公司来讲,我如果要招日常实习生,那我对实习生最基本的要求就是要能干活,毕竟你就待三四个月,谁会留心培养你? 那么除了院校之外,最重要的就是项目和实习了。没有实习的话项目就好好搞。 但是你说你这个项目吧:课程作业管理系统和TMS运输管理系统。这两个基本就和闹着玩差不多。 你作为一个想要应聘Java开发实习生的人,对后端的理解还仅仅停留在:“使用mapper和sql映射”,“使用SQL进行多表调用”,“基于MySQL简历表结构”,“基于Spring boot完成CURD操作”这种玩具上......... 找不到后端实习的
点赞 评论 收藏
分享
MingoTree:看不出你你的技术栈,想找什么工作,然后课设项目别写上去了,自我评价删了,前后端你想好你要干啥,这种简历投上去秒挂的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务