CS Academy Gcd Rebuild

题目链接:https://csacademy.com/contest/archive/task/gcd-rebuild/statement/

题目大意:给出一个N*M的矩阵,其中第i行j列表示gcd(a[i], b[j]),现在不知道数组a,b,给出这个矩阵,求a,b。如果多组解,输出其中一组,若无解,输出-1.

解题思路:观察观察(真的是观察出来的),发现如果有解,那么可以按照如下方式构造解:

1 for(int i = 1; i <= n; i++){
2     ll tmp = 1, la;
3     for(int j = 1; j <= m; j++){
4         la = tmp;
5         tmp *= c[i][j];
6         tmp /= gcd(la, c[i][j]);
7     }
8     a[i] = tmp;
9 }

对于每一列也是同样的方式。构造之后判断一下是否符合条件即可。

代码:

 1 const int maxn = 3e2 + 5;
 2 int n, m;
 3 ll c[maxn][maxn];
 4 ll a[maxn], b[maxn];
 5 
 6 ll gcd(ll x, ll y){
 7     return y == 0? x: gcd(y, x % y);
 8 }
 9 void solve(){
10     for(int i = 0; i <= n; i++) c[i][0] = c[0][i] = 1;
11     bool flag = true;
12     for(int i = 1; i <= n; i++){
13         ll tmp = 1, la;
14         for(int j = 1; j <= m; j++){
15             la = tmp;
16             tmp *= c[i][j];
17             tmp /= gcd(la, c[i][j]);
18         }
19         a[i] = tmp;
20         if(a[i] > 1e9) {
21             flag = false;
22             break;
23         }
24     }
25     if(!flag){
26         puts("-1");
27         return;
28     }
29     for(int i = 1; i <= m; i++){
30         ll tmp = 1, la;
31         for(int j = 1; j <= n; j++){
32             la = tmp;
33             tmp *= c[j][i];
34             tmp /= gcd(c[j][i], la);
35         }
36         b[i] = tmp;
37         if(b[i] > 1e9) {
38             flag = false;
39             break;
40         }
41     }
42     if(!flag){
43         puts("-1");
44         return;
45     }
46     for(int i = 1; i <= n; i++){
47         for(int j = 1; j <= m; j++){
48             if(c[i][j] != gcd(a[i], b[j])){
49                 flag = false;
50                 break;
51             }
52         }
53         if(!flag) break;
54     }
55     if(!flag){
56         puts("-1");
57         return;
58     }
59     for(int i = 1; i <= n; i++) printf("%lld ", a[i]);
60     puts("");
61     for(int i = 1; i <= m; i++) printf("%lld ", b[i]);
62 }
63 int main(){
64     scanf("%d %d", &n, &m);
65     for(int i = 1; i <= n; i++){
66         for(int j = 1; j <= m; j++){
67             scanf("%lld", &c[i][j]);
68         }
69     }
70     solve();
71 }

题目:

Gcd Rebuild

Time limit: 1000 ms
Memory limit: 256 MB

Consider two arrays: VV of size NN and UU of size MM. The elements of both arrays are integers between 11 and 10^9109​​.

You are given a matrix AA where A_{i,j} = \gcd(V_i, U_j)Ai,j​​=gcd(Vi​​,Uj​​) and \gcdgcd refers to the greatest common divisor. You are asked to find VV and UU.

Standard input

The first line contains two integers NN and MM.

Each of the next NN lines contains MM integers, representing the elements of AA.

Standard output

If there is no solution, or you cannot find a solution where the elements of VV and UU are in the range [1, 10^9][1,109​​], output -11.

Otherwise, print the NN elements of VV on the first line and the MM elements of UU on the second line. If the solution is not unique you can output any of them.

Constraints and notes

  • 1 \leq N, M \leq 3001N,M30
  • 1 \leq A_{i, j} \leq 10^91Ai,j​​109​​ 
InputOutputExplanation
3 3
1 2 2
3 2 2
3 1 1
2 6 3 
3 2 2 

gcd(2, 3)=1gcd(2,3)=1

gcd(2, 2)=2gcd(2,2)=2

gcd(6, 3)=3gcd(6,3)=3

gcd(6, 2)=2gcd(6,2)=2

gcd(3, 3)=3gcd(3,3)=3

gcd(3, 2)=1gcd(3,2)=1

3 2
2 2
2 2
4 2
2 2 4 
4 2 

gcd(2, 2)=2gcd(2,2)=2

gcd(2, 4)=2gcd(2,4)=2

gcd(4, 4)=4gcd(4,4)=4

2 2
1 1
1 1
1 1 
1 1 

gcd(1, 1)=1gcd(1,1)=1

3 3
4 2 4
2 4 2
4 2 4
-1

There is no solution

转载于:https://www.cnblogs.com/bolderic/p/7500447.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core 在 IIS 下的两种部署模式

KestrelServer最大的优势体现在它的跨平台的能力&#xff0c;如果ASP.NET CORE应用只需要部署在Windows环境下&#xff0c;IIS也是不错的选择。ASP.NET CORE应用针对IIS具有两种部署模式&#xff0c;它们都依赖于一个IIS针对ASP.NET CORE Core的扩展模块。一、ASP.NET CORE Cor…

navicat连接远程mysql

环境介绍: 这里,我连接的是阿里云的服务器,自己搭的环境,用的是mysql 5.7一 首先第一步,需要进入远程服务器的mysql,更改host访问权限 然后,将root允许访问的host 改为%(任何ip地址都可以访问) 注: 原来是只允许本地访问二 本地用navicat连接远程mysql 1. 常规部分填写2. SSH部…

2018-08-15期 HBase命令行使用案例

1、进入hbase命令行[roothadoop-server01 bin]# hbase shell2、命令行帮助COMMAND GROUPS:Group name: generalCommands: status, table_help, version, whoamiGroup name: ddlCommands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, dro…

面向对象五大设计原则

最近在看七牛云许式伟的架构课, 重温了面向对象五大设计原则(SOLID)&#xff0c;扣理论文字找出处。&#xff08;当然许老板是不可能深聊这么低级的内容&#xff0c;&#x1f921;&#xff09;注意区分设计原则和设计模式。设计原则更为抽象和泛化&#xff1b;设计模式也是抽象…

python函数式编程-匿名函数

>>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) [1, 4, 9, 16, 25, 36, 49, 64, 81] 关键字lambda表示匿名函数&#xff0c;冒号前面的x表示函数参数。 匿名函数有个限制&#xff0c;就是只能有一个表达式&#xff0c;不用写return&#xff0c;返回值就是该表…

bean初始化、注销

关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种&#xff1a; 第一种&#xff1a;通过PostConstruct 和 PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二种是&#xff1a;通过 在xml中定义init-method 和 destory-method方法 第三种是&#xff1a;…

谷歌F12调试公众号时,让鼠标显示出来

yi 环境介绍: win10 , 谷歌浏览器yii 概述: 在项目中,需要调试公众号,本地环境搭好之后,在谷歌浏览时,发现移动到公众号区域,鼠标居然不见了,这让我怎么操作?各种操作可谓是日了狗了,非常麻烦yiii 调试时鼠标不见的解决办法: 网上各种说法众说纷纭,这里,我给出本人认为最恰当简…

利用bootstrap插件设置时间

$("#"id_rand" .shijian-input").each(function () { $(this).datetimepicker({ lang:"ch", //语言选择中文 注&#xff1a;旧版本 新版方法&#xff1a;$.datetimepicker.setLocale(ch); format: "hh : ii", /…

C# 编写的 64位操作系统 -MOOS

MOOSMOOS ( My Own Operating System )是一个使用.NET Native AOT技术编译的C# 64位操作系统。项目地址&#xff1a;https://github.com/nifanfa/MOOS编译关于编译MOOS的信息&#xff0c;请阅读 编译维基页面&#xff1a;https://github.com/nifanfa/MOOS/wiki/。编译要求VMwar…

js获取屏幕宽高和下拉加载更多

document.body.clientWidth > BODY对象宽度 document.body.clientHeight > BODY对象高度 document.documentElement.clientWidth > 可见区域宽度 document.documentElement.clientHeight > 可见区域高度 网页可见区域宽&#xff1a; document.body.clientWid…

X5开发中buttongrounp对应contents组件切换时速度快点无效

官方提供的解决办法是&#xff1a;http://docs.wex5.com/wex5-ui-question-list-2084/ 原文如下&#xff1a;【问题】buttongrounp中的button按钮全是代码动态生成&#xff0c;对应的contents中的content也是代码动态生成。发现在快读点击button的时候&#xff0c;content就会死…

JAVA语言基础-面向对象(IO:IO字符流、递归)

2019独角兽企业重金招聘Python工程师标准>>> 21.01_IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出.2.FileReader FileReader类的read()方法…

windows下, nginx 提示错误 No input file specified

一 环境介绍: win10, LNMP 二 错误描述: 访问网站时,提示"No input file specified"错误. 排错阶段: 1. 查看nginx access日志 (access.log) 发现提示404 错误 2. 分析原因: 这时,在同目录下创建一个txt文件,访问就可以正常输出了 这说明 现在nginx 访问php 没…

Ubuntu20.04+docker+jenkins+飞书实现自动化发布

一、从0-1一点一滴实现如何本地提交代码到gitlab然后实现前后端自动发布1.更新apt包索引sudo apt-get update2.安装必备的软件包以允许apt通过https使用存储库sudo apt-get install ca-certificates curl gnupg lsb-release3.添加Docker官方版本的GPG密钥sudo mkdir -p /etc/ap…

一个Demo让你掌握Android所有控件

一个Demo让你掌握Android所有控件 原文:一个Demo让你掌握Android所有控件本文是转载收藏,侵删,出处:"安卓巴士" 下面给出实现各个组件的源代码&#xff1a; 1.下拉框实现--Spinner [java] view plaincopyprint?package com.cellcom; import java.util.ArrayList;…

九妹带你走向 架构师

迈向系统架构师编者按&#xff1a;系统架构师是许多程序员的梦想职业。今天的你也许已经掌握了各种开发工具&#xff0c;并且能够使用各种平台进行开发&#xff0c;但作为一个架构师的要求&#xff0c;也许还有很长的道路。邢波涛先生在LAMP架构上的造诣&#xff0c;让我邀请他…

WPF 使用 DrawingContext 绘制温度计

WPF 使用 DrawingContext 绘制温度计控件名&#xff1a;Thermometer作者&#xff1a; WPFDevelopersOrg原文链接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40&#xff1b;Visual Studio 2022;项目使用 MIT 开源许可协议&#xff…

MAVEN简介之——settings.xml

概述 Maven的settings.xml配置了Maven执行的方式&#xff0c;像pom.xml一样&#xff0c;但是它是一个通用的配置&#xff0c;不能绑定到任何特殊的项目。它通常包括本地仓库地址&#xff0c;远程仓库服务&#xff0c;认证信息等。 settings.xml存在于两个位置&#xff1a; mave…

装win10系统

一、使用U盘介质安装win10系统&#xff08;官方方式&#xff09; 官方安装工具下载地址&#xff1a;https://www.microsoft.com/zh-cn/software-download/windows10 1、进入官方安装工具下载页面&#xff0c;点击立即下载工具&#xff0c;下载安装工具。2、下载完成后&#xff…

C#构造函数、操作符重载以及自定义类型转换

构造器 构造器&#xff08;构造函数&#xff09;是将类型的实例初始化的特殊方法。构造器可分为实例构造器和类型构造器&#xff0c;本节将详细介绍有关内容。 实例构造器 顾名思义&#xff0c;实例构造器的作用就是对类型的实例进行初始化。如果类没有显示定义任何构造器&…