1 条题解

  • 0
    @ 2025-8-24 22:21:21

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Wenoide
    Wrong answer on line 1 column 12.

    搬运于2025-08-24 22:21:21,当前版本为作者最后更新于2020-05-03 12:31:30,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    • n=1n=1 时,输出 11 即可。

    • n=2n=2 时,显然无解。

    • n3n\ge3 时:

      按照题目要求,我们可以构造一个矩阵,使得:

      • 每行的平均数均为该行的倒数第二个数。
      • 每列的平均数均为该列的倒数第二个数。

    为了填入的数尽可能小,不妨令第一行的前 n1n-1 个数为 1,2,3,,n11,2,3,\dots,n-1

    若要使第一行的平均数为其倒数第二个数,则第一行的最后一个数为 (n1)n2\frac{(n-1)n}{2}

    将第一行的每个数加上 (n1)n2\frac{(n-1)n}{2},即可得到第二行。

    不难证明,第二行的平均数也是其倒数第二个数。

    类似地,可以得到矩阵的前 n1n-1 行。

    若要使第一列的平均数为其倒数第二个数,则第一列的最后一个数为1+(n2)(n1)n(n+1)41+\frac{(n-2)(n-1)n(n+1)}{4}

    类似地,可以得到最后一行的后 n1n-1 个数。

    不难证明,最后一行的平均数也是其倒数第二个数。


    最终的矩阵如下:

    11 22 33 \cdots n1n-1 (n1)n2\frac{(n-1)n}{2}
    1+1×(n1)n21+1\times\frac{(n-1)n}{2} 2+1×(n1)n22+1\times\frac{(n-1)n}{2} 3+1×(n1)n23+1\times\frac{(n-1)n}{2} \cdots n1+1×(n1)n2n-1+1\times\frac{(n-1)n}{2} (n1)n2+1×(n1)n2\frac{(n-1)n}{2}+1\times\frac{(n-1)n}{2}
    1+2×(n1)n21+2\times\frac{(n-1)n}{2} 2+2×(n1)n22+2\times\frac{(n-1)n}{2} 3+2×(n1)n23+2\times\frac{(n-1)n}{2} n1+2×(n1)n2n-1+2\times\frac{(n-1)n}{2} (n1)n2+2×(n1)n2\frac{(n-1)n}{2}+2\times\frac{(n-1)n}{2}
    \vdots \ddots \vdots
    1+(n2)×(n1)n21+(n-2)\times\frac{(n-1)n}{2} 2+(n2)×(n1)n22+(n-2)\times\frac{(n-1)n}{2} 3+(n2)×(n1)n23+(n-2)\times\frac{(n-1)n}{2} \cdots n1+(n2)×(n1)n2n-1+(n-2)\times\frac{(n-1)n}{2} (n1)n2+(n2)×(n1)n2\frac{(n-1)n}{2}+(n-2)\times\frac{(n-1)n}{2}
    1+(n2)(n1)n(n+1)41+\frac{(n-2)(n-1)n(n+1)}{4} 2+(n2)(n1)n(n+1)42+\frac{(n-2)(n-1)n(n+1)}{4} 3+(n2)(n1)n(n+1)43+\frac{(n-2)(n-1)n(n+1)}{4} n1+(n2)(n1)n(n+1)4n-1+\frac{(n-2)(n-1)n(n+1)}{4} (n1)n2+(n2)(n1)n(n+1)4\frac{(n-1)n}{2}+\frac{(n-2)(n-1)n(n+1)}{4}

    这个矩阵中是否存在相同的数?

    (n1)n2>n1\frac{(n-1)n}{2}>n-1n3n\ge 3 时恒成立。那么,每行的 nn 个数都是递增的。

    不难发现,第 2,3,,n12,3,\dots,n-1 行的第一个数均大于上一行的最后一个数。

    $1+\frac{(n-2)(n-1)n(n+1)}{4}>\frac{(n-1)n}{2}+(n-2)\times\frac{(n-1)n}{2}$ 在 n3n\ge 3 时恒成立。那么,第 nn 行的第一个数也大于上一行的最后一个数。

    所以,矩阵中不存在相同的数。

    nn 取最大值 100100 时,矩阵中的最大数 $\frac{(n-1)n}{2}+\frac{(n-2)(n-1)n(n+1)}{4}=24502500\le 10^9$。也满足要求。


    参考代码:

    #include<cstdio>
    int main(){
    	int n;
    	scanf("%d",&n);
    	if(n==1){
    		puts("1");
    		return 0;
    	}
    	if(n==2){
    		puts("-1");
    		return 0;
    	}
    	int k1=(n-1)*n/2,k2=(n-2)*(n-1)*n*(n+1)/4;
    	for(int i=1;i<n;++i){
    		for(int j=1;j<n;++j){
    			printf("%d ",j+(i-1)*k1);
    		}
    		printf("%d\n",i*k1);
    	}
    	for(int j=1;j<n;++j){
    		printf("%d ",j+k2);
    	}
    	printf("%d\n",k1+k2);
    	return 0;
    }
    
    • 1

    信息

    ID
    5524
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者