Codeforces 417E Square Table(随机算法)
题目链接:Codeforces 417E Square Table
题目大意:给出n和m。要求给出一个矩阵,要求每一列每一行的元素的平方总和是一个平方数。
解题思路:构造。依照
a a a b
a a a b
a a a b
c c c d
的方式取构造,然后a,b,c,d的值用随机生成数去枚举,只是我认为用暴力也是能够的。
#include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> bool judge (int s) { int k = sqrt(s); return k * k == s; } int main () { int n, m; int a, b, c, d; scanf("%d%d", &n, &m); while (true) { a = rand()%100 + 1; b = rand()%100 + 1; c = rand()%100 + 1; d = rand()%100 + 1; if (judge(a * a * (m-1) + b * b) && judge(a * a * (n-1) + c * c) && judge(b * b * (n-1) + d * d) && judge(c * c * (m-1) + d * d) ) break; } for (int i = 1; i < n; i++) { for (int j = 1; j < m; j++) printf("%d ", a); printf("%d\n", b); } for (int i = 1; i < m; i++) printf("%d ", c); printf("%d\n", d); return 0; }