幻方矩阵

幻方矩阵
Time Limit: 4000ms, Special Time Limit:8000ms, Memory Limit:2048KB
Total submit users: 547, Accepted users: 367
Problem 10029 : Special judge
Problem description
幻方是一种很有意思的数字矩阵,在很早著名的九宫八卦阵就与幻方有关。
幻方的定义为: 
1 到 N*N 的整数填入N*N的方格中,每行和每列以及对角线的数字之和必须是相等的。
你作为八卦公司的顶级程序员,现在需要你解决一个问题,将任意奇数阶的幻方找出来。

Input
输入包括多个测试集,每行为一个正奇数N(1 <= N < 1000),0作为输入的结束且不需要处理。

Output
对于输入的每一个N, 输出一个它所对应的N阶幻方,如果存在多个,任意一个即可。
每个幻方为N*N的矩阵,
对于每个幻方,每行输出幻方的一行,每行中的数字之间用一个或多个空格分开。 不同的幻方之间用一个空行分开。

Sample Input
1
3
0
Sample Output
1

4 9 2
3 5 7
8 1 6
Problem Source
昊博士

 

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int f(int n)
 5 {
 6     int i,j,ans;
 7  for(i=1;i<=n;i++)
 8  {
 9      for(j=1;j<=n;j++)
10   {
11       ans=((i+j+(n-3)/2)%n)*n+(i-j+(3*n-1)/2)%n+1;
12    if(j<n)
13    {
14     printf("%d ",ans);
15    }
16    else
17     printf("%d\n",ans);
18   }
19  }
20  return 0;
21 }
22 
23 int main()
24 {
25   int n;
26  while(scanf("%d",&n) && n)
27  {
28     f(n);
29     printf("\n");
30  }
31 }

转载于:https://www.cnblogs.com/hncu1009302xudandan/archive/2012/07/19/2600043.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值