#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,k;
void solve()
{
cin>>n>>k;
int x = 0,y = k;
for(int i = 1 ; i <= n ; ++i)
for(int j = 1 ; j <= n ; ++j)
{
if(i == j)cout<<y<<" \n"[j == n];
else cout<<x<<" \n"[j == n];
}
}
signed main()
{
int t = 1;
// cin>>t;
while(t--)
solve();
return 0;
}
其实凡是构造题目,只需要对题目有些理解,然后把特殊的化成一般的情况就可以了。
我们基本上题目就发现题目有以下性质:任意选取一个对角线,假设这上面的数字是y,其他位置都填x。
这样子每个y都只作用于一行一列。
那么就可以出现合法的情况:每一行每一列的值都是(n+1)x+y=k。
由于题目并没有要求x y要是不相等的,可以考虑把x赋值成1,y可以用k和n表示出来。
当然更简单的是让x=0那么y=k了,那也就是选取的对角线的所有值为y,其他值都为0。

京公网安备 11010502036488号