Codeforces Round #323 (Div. 2) C.GCD Table

C. GCD Table

The GCD table G of size n × n for an array of positive integers a of length n is defined by formula

Let us remind you that the greatest common divisor (GCD) of two positive integers x and y is the greatest integer that is divisor of both xand y, it is denoted as . For example, for array a = {4, 3, 6, 2} of length 4 the GCD table will look as follows:

Given all the numbers of the GCD table G, restore array a.

Input

The first line contains number n (1 ≤ n ≤ 500) — the length of array a. The second line contains n2 space-separated numbers — the elements of the GCD table of G for array a.

All the numbers in the table are positive integers, not exceeding 109. Note that the elements are given in an arbitrary order. It is guaranteed that the set of the input data corresponds to some array a.

Output

In the single line print n positive integers — the elements of array a. If there are multiple possible solutions, you are allowed to print any of them.

Sample test(s)
input
4
2 1 2 3 4 3 2 6 1 1 2 2 1 2 3 2
output
4 3 6 2
input
1
42
output
42 
input
2
1 1 1 1
output
1 1 


思路:

  设数列X: a11, a12,...., ann;
由于gcd(a,b)<=min(a,b);
ans[N]存放已经选中的数,即array中一定存在的数; 
首先从X中找到最大的一个值aij,然后对ans[N]中的每一个数,得到g = gcd(aij, ans[i]), 
由于table矩阵是对称的,所以从X中删除2个值为 g 的数值!
最后将aij放入ans中!不断重复此过程,知道ans中数字个数为n;


#include<iostream> 
#include<cstring>
#include<cstdio>
#include<cmath>
#include<map>
#include<set>
#include<algorithm>
#define N 505
using namespace std;int n;
map<int, int, greater<int> >mp;//key按照由大到小排序 int gcd(int a, int b){return b==0 ? a : gcd(b, a%b);
}int ans[N];int main(){cin>>n;int nn = n*n;for(int i=0; i<nn; ++i){int x;cin>>x;mp[x]++;}int len = 0;for(map<int, int, greater<int> >::iterator it=mp.begin(); it!=mp.end();){if(it->second == 0){//不为0,说明这个数还是array中的数字++it;continue;    }--it->second;for(int i=0; i<len; ++i){int gcdn = gcd(it->first, ans[i]);mp[gcdn]-=2;}ans[len++] = it->first;}    for(int i=0; i<n; ++i){if(i!=0) cout<<" ";cout<<ans[i];}cout<<endl;return 0;
}


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

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

相关文章

豆瓣9.8,它凭「少儿不宜」吊打所有美剧!脑洞大开必看神作!【内附资源】...

全世界只有3.14 % 的人关注了爆炸吧知识给最近剧荒的你安利一部脑洞大开、想象力天马行空的成人动画&#xff08;妥妥的神剧!&#xff09;——《Rick and Morty》Rick and Morty瑞克和莫蒂这部少儿不宜????的成人动画到底收获了多少好评呢&#xff1f;抛开拿到美国电视剧届…

java 继承与多态 习题_JAVA基础 第4章继承与多态_练习题_200910

Java基础第4章练习题大外软件学院第4章继承与多态一&#xff0e;选择题1. 编译和运行以下两文件结果是( D )。//文件P1.javapackage MyPackage;class P1{void afancymethod(){System.out.println("What a fancy method");}}//文件P2.javapackage YourPackage;import …

[设计模式原则]第五回:迪米特原则

1.引言 迪米特法则&#xff08;Law of Demeter&#xff09;又叫作最少知识原则&#xff08;LKP,Least Knowledge Principle&#xff09;&#xff0c;就是说一个对象应当对其他对象有尽可能少的了解&#xff0c;类与类之间的了解的越多&#xff0c;关系越密切&#xff0c;耦合度…

如何判断当前请求的API类型

前言上次&#xff0c;我们判断了《当前请求是否健康检查API》&#xff0c;避免其写入日志。但是&#xff0c;对于我们自己开发的API来说&#xff0c;最好也能来区分&#xff0c;比如调试用API&#xff0c;就不需要再写调用日志了。DisplayName方式直接判断路由地址的方式就不考…

Android之DrawText详解

如果你经常使用Canvas的draw***方法去绘制一些图像图形&#xff0c;绘制的坐标是从Canvas左上角开始计算的&#xff0c;如果想要把一个图像放到某个位置&#xff0c;直接drawBitmap传递图片左上角的坐标就行了。那drawText就不一样&#xff0c;如果你传递进去字符串&#xff0c…

Gruntjs: grunt-contrib-jst

预编译Underscore模板到JST文件&#xff08;Underscore&#xff1a;JS工具库) generate JavaScript template functions Gruntfile的配置实例&#xff1a; 1 module.exports function(grunt) {2 3 grunt.initConfig({4 jst: {5 bulid: {6 …

托马斯反驳牛顿被骂,普朗克颜值过高遭上帝捉弄,狄拉克却因爱情成话痨

全世界只有3.14 % 的人关注了爆炸吧知识今天&#xff0c;小编抑制不住自己&#xff0c;要给大家强烈推荐一个公众号“少年物理学家”&#xff01;少年物理学家是一个致力为学生家长和老师&#xff0c;提供丰富的物理小知识&#xff1a;物理学家、物理趣谈、科技与物理、万物背后…

Android之滑动事件冲突解决 Touch事件处理机制总结

android中的事件类型分为按键事件和屏幕触摸事件,Touch事件是屏幕触摸事件的基础事件,有必要对它进行深入的了解。 一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTION_DOWN->ACTION_MOVE->ACTION_MOVE->ACTION_MOVE...->ACTION_MOVE->ACTION_UP 当屏幕…

php 信号量 关闭,php 信号量

一些理论基础&#xff1a;信号量&#xff1a;又称为信号灯、旗语 用来解决进程(线程同步的问题)&#xff0c;类似于一把锁&#xff0c;访问前获取锁(获取不到则等待)&#xff0c;访问后释放锁。临界资源&#xff1a;每次仅允许一个进程访问的资源。临界区&#xff1a;每个进程中…

分享:MetaModel 3.2.5 发布,数据库元模型

MetaModel 3.2.5 发布&#xff0c;数据库元模型 http://www.oschina.net/news/36236/metamodel-3-2-5

CALL FOR DUTY 来和我们一起冒险吧!

我们面临的挑战是什么&#xff1f;昨天发了一篇让大家提问Scott Hanselman的问题&#xff0c;有人调侃 &#xff08;也许是认真的&#xff09;让我问他&#xff1a;“.NET还有救吗&#xff1f;” &#xff0c;我的第一反应不是.NET还有没有救&#xff0c;而是该怎么救问这个问题…

HarmoryOS,API9项目配置

官方配置信息讲解如下&#xff1a;文档中心 1、APP名字图标&#xff1a;在entry模块&#xff0c;module.json5文件中 2、module配置 build-profile.json5文件中 3、包名 app.json5

厉害!他33岁破格晋升教授和博导,成果还打破国外技术垄断

全世界只有3.14 % 的人关注了爆炸吧知识来源 | 长江大学新闻网、长江大学石油工程学院、PaperRSS转自 | 学术资源大全他是人到中年"顺意人生"的代表&#xff0c;29岁晋升副教授、33岁破格晋升教授和博导&#xff1b;他独辟蹊径&#xff0c;将"智能"融入石油…

设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

设计模式 ( 十四 ) 迭代器模式Iterator&#xff08;对象行为型&#xff09;1.概述类中的面向对象编程封装应用逻辑。类&#xff0c;就是实例化的对象&#xff0c;每个单独的对象都有一个特定的身份和状态。单独的对象是一种组织代码的有用方法&#xff0c;但通常你会处理一组对…

开源网站

开源网站&#xff1a; Code Google 谷歌旗下的一个开源项目托管网站&#xff0c;资源很丰富&#xff0c;文档也很齐全&#xff0c;甚至还有中文文档。 Souceforge 国外一个比较有名的开源网站&#xff0c;很多有名的开源项目都是在这个网站托管的。 Github 也很不错的一个开源网…

Android之Volley 源码解析

原文来自&#xff1a;http://www.codekk.com 1. 功能介绍 1.1. Volley Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架。在 Google I/O 2013 大会上发布。 名字由来&#xff1a;a burst or emission of many things or a large amount at once 发布演讲…

双击打开Inventor文件

为什么80%的码农都做不了架构师&#xff1f;>>> 出现的问题&#xff1a; 正常启动电脑后&#xff0c;我双击桌面上的一个idw文件&#xff0c;默认使用 Inventor 2013 打开该格式的文件&#xff1b;但 Inventor 启动不到一半就弹出了如下的错误窗口&#xff0c;点击…

php long2ip,php 中IPV6 ip2long的问题解决办法

在32位系统&#xff0c;ip2long不能转换IPv6&#xff0c;但您可以转换ip2bin和bin2ip 这个函数转换为IPv4和IPv6&#xff0c;返回false&#xff0c;如果是无效的实例程序 代码如下复制代码function ip2bin($ip){if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ! fa…

phpstrom 编辑器设置

http://www.jb51.net/article/58069.htm 配置sublime主题 保存配置的路径为&#xff1a;将Monokai_Sublime.xml拷贝到C:\Users\Administrator\.WebIde100\config\colors&#xff0c;然后重启phpstrom即可 当主题样式选为暗黑色的时候&#xff0c;选中的代码的背景色也会有点暗…

记一次 .NET 某妇产医院 WPF内存溢出分析

一&#xff1a;背景 1. 讲故事上个月有位朋友通过博客园的短消息找到我&#xff0c;说他的程序存在内存溢出情况&#xff0c;寻求如何解决。要解决还得通过 windbg 分析啦。二&#xff1a;Windbg 分析 1. 为什么会内存溢出大家都知道内存溢出对应着 .NET 中的 OutOfMemonryExce…