Codeforces 417E Square Table(随机算法)
2014-04-19 13:31
302 查看
题目链接: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;
}
题目大意:给出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;
}
相关文章推荐
- UPNP端口映射全过称
- matlab绘图基础
- POJ 2739 - Sum of Consecutive Prome Numbers
- Linux-nat与nat
- POJ 1552 - Doubles
- hdu4747 线段树
- jquery 之事件 多库共存(noConflict)
- Linux用户添加sudoer
- 泽熙等多机构调研紫光股份,核心关注云计算机产品
- POJ 1005 - I Think I Need a Houseboat
- 朗沃20140415
- POJ 1004 - Financial Management
- HDU1166 敌兵布阵 线段数组
- Codeforces 417D Cunning Gena(状态压缩dp)
- UIScrollView 和 UIPageControl实现页面循环播放
- POJ 1003 - Hangover
- fetch策略
- 黑马程序员-字符流数组对象学习日记
- 梵蒂冈45号
- spring aop xml方式