题目链接:

  http://codeforces.com/problemset/problem/710/C

题目大意:

  构造一个N*N的幻方。任意可行解。

  幻方就是每一行,每一列,两条对角线的和都相等。

题目思路:

  【模拟】

  分为奇幻方、单偶幻方和双偶幻方三种构造。

  具体分类可以查看百度。幻方的N种构造方法

 

 //
//by coolxxx
//#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<map>
#include<memory.h>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//#include<stdbool.h>
#include<math.h>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define abs(a) ((a)>0?(a):(-(a)))
#define lowbit(a) (a&(-a))
#define sqr(a) ((a)*(a))
#define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
#define mem(a,b) memset(a,b,sizeof(a))
#define eps (1e-8)
#define J 10
#define mod 1000000007
#define MAX 0x7f7f7f7f
#define PI 3.14159265358979323
#define N 54
using namespace std;
typedef long long LL;
int cas,cass;
int n,m,lll,ans;
int a[N][N];
void work1(int xx,int yy,int nn,int s,int t)
{
int i,x,y;
x=xx+;y=yy+nn/;
a[x][y]=s;
for(i=s+;i<=t;i++)
{
x=(x-+nn)%nn+xx;
y=(y+)%nn+yy;
if(a[x][y])x=(x+)%nn+xx,y=(y-+nn)%nn+yy;
a[x][y]=i;
}
}
void work2()
{
int i,j,k;
m=n/;k=m/;
work1(,,m,,sqr(m));
work1(m,m,m,sqr(m)+,sqr(m)*);
work1(,m,m,sqr(m)*+,sqr(m)*);
work1(m,,m,sqr(m)*+,sqr(m)*);
for(i=,j=m+m/;i<m;i++)
swap(a[i][j],a[i+m][j]);
for(i=;i<m;i++)
{
if(i==k)continue;
for(j=;j<k;j++)
swap(a[i][j],a[i+m][j]);
}
for(i=;i<k;i++)
swap(a[k][i+k],a[k+m][i+k]);
}
void work3()
{
int i,j,k;
m=n*n+;
for(i=;i<n;i++)
for(j=;j<n;j++)
a[i][j]=i*n+j+;
for(i=;i<n;i+=)
{
for(j=;j<n;j+=)
{
for(k=;k<;k++)
{
a[i+k][j+k]=m-a[i+k][j+k];
a[i+k][j+-k]=m-a[i+k][j+-k];
}
}
}
}
int main()
{
#ifndef ONLINE_JUDGE
// freopen("1.txt","r",stdin);
// freopen("2.txt","w",stdout);
#endif
int i,j,k;
// for(scanf("%d",&cas);cas;cas--)
// for(scanf("%d",&cas),cass=1;cass<=cas;cass++)
// while(~scanf("%s",s+1))
while(~scanf("%d",&n))
{
if(n&)
work1(,,n,,sqr(n));
else if(n%==)
work3();
else
work2();
for(i=;i<n;i++)
{
for(j=;j<n;j++)
printf("%d ",a[i][j]);
puts("");
}
}
return ;
}
/*
// //
*/

【模拟】Codeforces 710C Magic Odd Square的更多相关文章

  1. Codeforces 710C. Magic Odd Square n阶幻方

    C. Magic Odd Square time limit per test:1 second memory limit per test:256 megabytes input:standard ...

  2. CodeForces - 710C Magic Odd Square(奇数和幻方构造)

    Magic Odd Square Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, c ...

  3. codeforces 710C Magic Odd Square(构造或者n阶幻方)

    Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, column and both ma ...

  4. CodeForces 710C Magic Odd Square (n阶奇幻方)

    题意:给它定一个n,让你输出一个n*n的矩阵,使得整个矩阵,每行,每列,对角线和都是奇数. 析:这个题可以用n阶奇幻方来解决,当然也可以不用,如果不懂,请看:http://www.cnblogs.co ...

  5. CodeForces 710C Magic Odd Square

    构造. 先只考虑用$0$和$1$构造矩阵. $n=1$,$\left[ 1 \right]$. $n=3$,(在$n=1$的基础上,最外一圈依次标上$0$,$1$,$0$,$1$......) $\l ...

  6. codeforces 710C C. Magic Odd Square(构造)

    题目链接: C. Magic Odd Square Find an n × n matrix with different numbers from 1 to n2, so the sum in ea ...

  7. [Educational Codeforces Round 16]C. Magic Odd Square

    [Educational Codeforces Round 16]C. Magic Odd Square 试题描述 Find an n × n matrix with different number ...

  8. Magic Odd Square (思维+构造)

    Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, column and both ma ...

  9. 689D Magic Odd Square 奇数幻方

    1 奇数阶幻方构造法 (1) 将1放在第一行中间一列; (2) 从2开始直到n×n止各数依次按下列规则存放:按 45°方向行走,向右上,即每一个数存放的行比前一个数的行数减1,列数加1 (3) 如果行 ...

随机推荐

  1. JavaScript - 运算符 == 与 === 的区别

    在 JavaScript 中,运算符 == 与 === 都是用来比较两个值是否相等.但是这两个操作符有个不同的地方:== 并不表示严格相等,而 === 表示进行严格比较,不仅比较值,而且会比较变量的类 ...

  2. 使用Spring简化JDBC操作数据库

    Spring的开发初衷是为了减轻企业级开发的复杂度,其对数据库访问的支持亦如此,使用Spring访问数据库能带来以下好处: 1.1     简化代码 使用原生的JDBC访问数据库,一般总是要执行以下步 ...

  3. c#正则表达式采集数据

    protected void Page_Load(object sender, EventArgs e){ StringBuilder MyStringBuilder = new StringBuil ...

  4. selenium+eclipse+python环境

    1.下载并安装jdk,配置环境变量: 2.下载并安装python,配置path系统环境变量:D:\Program Files\python34: 3.安装selenium,在安装好的python路径D ...

  5. JS & JQuery 动态添加 select option

    因为是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因. 如有冒犯请联系本人,或删除,或标明出处. 因为好的文章,以前只想收藏,但连接有时候会失效,所以 ...

  6. 谈一下关于C++函数包装问题

    在C++中,我们经常遇到在某个特定的时刻,需要将函数进行包装调用,尤其是当我们需要将不同签名的函数放到同一个集合时,由于函数签名不一致导致我们不能直接将各式各样的函数指针放到诸如list这样的集合中, ...

  7. C# winform 右下角弹窗

    [DllImport("user32")] private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, in ...

  8. ECSHOP错误Redefining already defined constructor for class如何解决

    本地PHP环境PHP5.4,安装ecshop2.7.3后,很多地方会报如下的错 Redefining already defined constructor for class XXX 使用和类名相同 ...

  9. openerp service install

    cp  openerp.init  to   /etc/init.d/openerp update-rc.d   openerp default PATH=/sbin:/usr/sbin:/bin:/ ...

  10. c#xml序列化对象,xml标记都缩写了

    最近最后一个接口,他们的格式很严格必须是如下格式 <message> <age>20</age> <name>张三</name> </ ...