GameRoad

立志做一名懂美术的程序员O(∩_∩)O

模拟-711B - Chris and Magic Square

题意:给出N,下面N行N列输入。其中有一个位置是0,找出一个正整数使得行列对角线和相等


比赛时候没看到对角线的事WA的惨烈啊


#include <iostream>
#include <stdio.h>
using namespace std;
long long a[505][505];
long long sum1[505];
long long sum2[505];
int main()
{
    int n;
    cin>>n;
    if(n==1)
    {
    int t;
    cin>>t;
    printf("1\n");
    return 0;
    }
    long long flag1,flag2,flag,tep1,xx=0,gg=0;
    for(int i=1;i<=n;i++)
    {   flag=0;
        for(int j=1;j<=n;j++)
        {
            scanf("%lld",&a[i][j]);
            if(a[i][j]==0)
            {
                flag=1;
                flag1=i;
                flag2=j;
            }
            sum1[i]+=a[i][j];
        }
        if(flag==0)
            {
                if(xx==0)
                {
                    tep1=sum1[i];
                    xx=1;
                }
                if(sum1[i]!=tep1)
                    gg=1;
            }
    }
   // printf("%d %d \n",flag1,flag2);
    if(gg==1)
    {
        printf("-1\n");
        return 0;
    }
    long long tep2=0,yy=0;
    for(int j=1;j<=n;j++)
    {
        flag=0;
        for(int i=1;i<=n;i++)
        {
        if(a[i][j]==0)
        {
            flag=1;
        }
        sum2[j]+=a[i][j];
        }
        if(flag==0)
        {
            if(yy==0)
            {
                tep2=sum2[j];
                yy=1;
            }
            if(sum2[j]!=tep2)
                gg=1;
        }
    }
  //  printf("%d\n",tep2);
    if(gg==1)
    {
        printf("-1\n");
        return 0;
    }
    long long  ss=0;
    for(int j=1;j<=n;j++)
        ss+=a[flag1][j];
   // printf("ss=%d\n",tep1);
    //printf("%dgg\n",a[flag1][flag2]);
    a[flag1][flag2]=tep1-ss;
   // printf("%d\n",a[flag1][flag2]);
    if(a[flag1][flag2]<=0)
    {
        printf("-1\n");
        return 0;
    }
    if(tep1==tep2)
    {
        long long suma=0,sumb=0;
        for(int i=1;i<=n;i++)
            suma+=a[i][i];
        for(int i=1;i<=n;i++)
            sumb+=a[i][n-i+1];
//printf("%lld %lld",suma,sumb);
        if(suma==sumb&&suma==tep1)
        printf("%lld\n",a[flag1][flag2]);
        else
            printf("-1\n");
    }
    else
        printf("-1\n");
    return 0;
}


阅读更多
版权声明:恩! https://blog.csdn.net/qq_33951440/article/details/52368288
个人分类: 模拟 codeforces
所属专栏: acm
上一篇PAT-Sign In and Sign Out (25)
下一篇找规律:hdu4722
想对作者说点什么? 我来说一句

maxent tutorial slides

2018年04月07日 10.28MB 下载

幻方构造及实现

2013年05月29日 156KB 下载

PCL点云库MovingLeastSquares用法demo

2014年07月08日 151KB 下载

Chris Richardson微服务系列

2016年06月16日 3MB 下载

Theatre Square

2016年11月02日 187B 下载

Flash Magic 中文使用手册

2009年08月12日 92KB 下载

Magic Retouch Pro 4.2汉化版

2018年04月13日 120.49MB 下载

flash magic manual

2010年12月23日 546KB 下载

没有更多推荐了,返回首页

关闭
关闭