UVALive
来源:互联网 发布:天刀侠女捏脸数据 编辑:程序博客网 时间:2024/05/21 16:54
Multiplication Table
题目链接:Multiplication Table
题意:给一个数字矩阵,
思路:当子矩阵中都是
当子矩阵中只有一个数时,我们只需要验证这个数是否合法(其约数≥其坐标位置)
当子矩阵中有两个或者多个数时,我们可以枚举第一个数的约数来确定这个矩阵的位置,然后再验证其他位置上的数是否正确即可
代码:
#include<stdio.h>#include<math.h>#include<string.h>#include<algorithm>using namespace std;const int maxn=1e3+10;int num[maxn][maxn],p[maxn][2];int n,m,sum;bool flag;int Change(char s[]){ int tot=0; for(int i=0; i<strlen(s); ++i) tot=tot*10+s[i]-'0'; return tot;}bool Judge_one()//只有一个数时,判断这个数是否合理{ int x=p[1][0],y=p[1][1]; int tot=num[x][y]; for(int i=1; i<=sqrt(tot*1.0); ++i) if(tot%i==0&&((i>=x&&tot/i>=y)||(i>=y&&tot/i>=x))) return true; return false;}bool Judge_more()//多个数{ int x=p[1][0],y=p[1][1]; int tot=num[x][y]; for(int i=1; i<=sqrt(tot*1.0); ++i) { if(tot%i==0) { int a=i,b=tot/i; if(a>=x&&b>=y) { bool flog=true; for(int j=2; j<=sum&&flog; ++j) if((a-x+p[j][0])*(b-y+p[j][1])!=num[p[j][0]][p[j][1]]) flog=false; if(flog) return true; } if(b>=x&&a>=y) { bool flog=true; for(int j=2; j<=sum&&flog; ++j) if((b-x+p[j][0])*(a-y+p[j][1])!=num[p[j][0]][p[j][1]]) flog=false; if(flog) return true; } } } return false;}int main(){ int t,k=0; char s[20]; scanf("%d",&t); while(++k<=t) { sum=0; memset(num,0,sizeof(num)); scanf("%d%d",&n,&m); for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j) { scanf("%s",s); if(s[0]!='?') num[i][j]=Change(s),p[++sum][0]=i,p[sum][1]=j; } if(!sum) flag=true; else if(sum==1) flag=Judge_one(); else flag=Judge_more(); if(flag) printf("Case #%d: Yes\n",k); else printf("Case #%d: No\n",k); } return 0;}
阅读全文
1 0
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- python圣斗士修炼(一):实现hello world
- 对Android TreeView 的实现,目录结构的实现
- 记账本弹出框判断
- Android中RelativeLayout各个属性
- 无人驾驶汽车系统入门(二)——高级运动模型和扩展卡尔曼滤波
- UVALive
- 超级楼梯
- HDU 5340 Three Palindromes 暴力+Manacher
- AndroidStudio查看类的结构和继承关系快捷键
- 第七周【项目3
- PAT乙级1053. 住房空置率(20)
- JAVA数组的复制
- 实现类Student的创建
- 图像特效之鱼眼特效