题目大意:给你一串数$a_i$,求$sgcd(a_1,a_i)$,$sgcd(x,y)$表示$x,y$的次大公约数,若没有,则为$-1$

题解:即求最大公约数的最大约数,把$a_1$分解质因数,求出最大公约数,再判断是否可以被整除就行了

卡点:

C++ Code:

#include <cstdio>
#include <vector>
#define maxn 100010
std::vector<long long> v;
int n, sz;
long long s[maxn];
long long gcd(long long a, long long b) {return b ? gcd(b, a % b) : a;}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) scanf("%lld", s + i);
long long t = s[1];
for (long long i = 2; i * i <= t; i++) {
if (t % i == 0) {
while (t % i == 0) t /= i;
v.push_back(i);
sz++;
}
}
if (t > 1) v.push_back(t), sz++;
for (int i = 1; i <= n; i++) {
long long tmp = gcd(s[1], s[i]);
if (tmp == 1) printf("-1");
else {
for (int i = 0; i < sz; i++) if (tmp % v[i] == 0) {
printf("%lld", tmp / v[i]);
break;
}
}
putchar(i == n ? '\n' : ' ');
}
return 0;
}

  

[UOJ #48]【UR #3】核聚变反应强度的更多相关文章

  1. 【uoj#48】[UR #3]核聚变反应强度 数论

    题目描述 给出一个长度为 $n$ 的数列 $a$ ,求 $a_1$ 分别与 $a_1...a_n$ 的次大公约数.不存在则输出-1. 输入 第一行一个正整数 $n$ . 第二行 $n$ 个用空格隔开的 ...

  2. [UR #3] 核聚变反应强度

    次大公约数就是gcd再除以其最小质因子(如果有的话).可以发现要求的sgcd 的前身gcd都是a1的约数,所以把a1质因数分解直接做就行了. #include<bits/stdc++.h> ...

  3. 【UOJ#48】【UR #3】核聚变反应强度(质因数分解)

    [UOJ#48][UR #3]核聚变反应强度(质因数分解) 题面 UOJ 题解 答案一定是\(gcd\)除掉\(gcd\)的最小质因子. 而\(gcd\)的最小值因子一定是\(a_1\)的质因子. 所 ...

  4. uoj 48 核聚变反应强度 次小公因数

    [UR #3]核聚变反应强度 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/48 Description 著名核 ...

  5. UOJ 【UR #5】怎样跑得更快

    [UOJ#62]怎样跑得更快 题面 这个题让人有高斯消元的冲动,但肯定是不行的. 这个题算是莫比乌斯反演的一个非常巧妙的应用(不看题解不会做). 套路1: 因为\(b(i)\)能表达成一系列\(x(i ...

  6. UOJ #22 UR #1 外星人

    LINK:#22. UR #1 外星人 给出n个正整数数 一个初值x x要逐个对这些数字取模 问怎样排列使得最终结果最大 使结果最大的方案数又多少种? n<=1000,x<=5000. 考 ...

  7. UOJ.52.[UR #4]元旦激光炮(交互 思路)

    题目链接 \(Description\) 交互库中有三个排好序的,长度分别为\(n_a,n_b,n_c\)的数组\(a,b,c\).你需要求出所有元素中第\(k\)小的数.你可以调用至多\(100\) ...

  8. UOJ【UR #12】实验室外的攻防战

    题意: 给出一个排列$A$,问是否能够经过以下若干次变换变为排列$B$ 变换:若${A_i> A_i+1}$,可以${swap(A_i,A_i+1)}$ 考虑一个数字从A排列到B排列连出来的路径 ...

  9. UOJ 48 次最大公约数

    次最大公约数 = gcd / 其中一个数质因数中最小的. gcd(42,12) = 6;    div(42) = 2*3*7   div(12) = 2^2*3 sgcd(42,12) = 6 / ...

随机推荐

  1. JQuery中使用FormData异步提交数据和提交文件

    web中数据提交事件是常常发生的,但是大多数情况下我们不希望使用html中的form表单提交,因为form表单提交会中断当前浏览器的操作并且会调到另一个地址(即使这个地址是当前页面),并且会重复加载一 ...

  2. collections模块的使用

    1. Counter counter是collections中的一个模块, 它能够统计出字符串/文本中的每一个元素出现的次数, 并可以对结果进行进一步的处理. 使用方法 传入: 字符串 默认返回: C ...

  3. QP之QEP原理

    1.QP简介: 量子平台(Quantum Platform, 简称QP)是一个用于实时嵌入式系统的软件框架,QP是轻量级的.开源的.基于层次式状态机的.事件驱动的平台. QP包括事件处理器(QEP). ...

  4. python学习——装饰器函数

    一.装饰器函数的作用是什么 答:装饰器函数是在不修改原函数及其调用方式的情况下对原函数功能进行扩展 对于搞python开发的人来说,函数占据了至关重要的地位.都说学好函数你就可以去找工作了,好了,假如 ...

  5. python与mysql的连接过程

    1.cmd---pip3 install PyMySQL2.>>>import pymysql3.mysql>create database bookdb character ...

  6. CentOs安装Mysql和配置初始密码

    mysql官网yum安装教程,地址:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/#repo-qg-yum-fresh-install ...

  7. HDOJ 1176 免费馅饼(完全背包)

    参考:https://blog.csdn.net/hhu1506010220/article/details/52369785 https://blog.csdn.net/enjoying_scien ...

  8. HBase 增删改查Java API

    1. 创建NameSpaceAndTable package com.HbaseTest.hdfs; import java.io.IOException; import org.apache.had ...

  9. Hadoop学习(一) Hadoop是什么

    Hadoop是什么? Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用Java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算. Hadoop框架 ...

  10. 签名APK后仍然出现INSTALL_PARSE_FAILED_NO_CERTIFICATES的解决方案

    修改apk里的dex并且修复后重新打包进apk里,使用signapk.jar签名后安装仍然出现INSTALL_PARSE_FAILED_NO_CERTIFICATES,搜了很久,使用了多种方法签名仍然 ...