博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【UOJ#48】【UR #3】核聚变反应强度(质因数分解)
阅读量:5160 次
发布时间:2019-06-13

本文共 1017 字,大约阅读时间需要 3 分钟。

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

题面

题解

答案一定是\(gcd\)除掉\(gcd\)的最小质因子。

\(gcd\)的最小值因子一定是\(a_1\)的质因子。
所以预处理出\(a_1\)的质因子,个数不会超过\(\log(a)\)个,然后就可以直接暴力了。
时间复杂度\(O(n\log(a)+\sqrt a)\)

#include
#include
#include
using namespace std;#define ll long longinline ll read(){ ll x=0;bool t=false;char ch=getchar(); while((ch<'0'||ch>'9')&&ch!='-')ch=getchar(); if(ch=='-')t=true,ch=getchar(); while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar(); return t?-x:x;}int n,tot;ll fac[100000],a[1000100];ll Calc(ll n){ if(n==1)return -1; for(int i=1;i<=tot;++i) if(n%fac[i]==0)return n/fac[i]; return 1;}int main(){ n=read(); for(int i=1;i<=n;++i)a[i]=read(); ll x=a[1]; for(int i=2;1ll*i*i<=x;++i) if(x%i==0) { fac[++tot]=i; while(x%i==0)x/=i; } if(x>1)fac[++tot]=x; for(int i=1;i<=n;++i)printf("%lld ",Calc(__gcd(a[1],a[i]))); puts(""); return 0;}

转载于:https://www.cnblogs.com/cjyyb/p/11051412.html

你可能感兴趣的文章
selenium用法
查看>>
壳的执行过程
查看>>
ReentrantReadWriteLock类和ReentrantLock类的区别
查看>>
Qt5.3.2_CentOS6.4_基本编程环境__20160306【勿删,繁琐】
查看>>
Qt数据库_资料
查看>>
13.模块(概念)
查看>>
php实现获取汉字的首字母实例
查看>>
IE8下最帅的快捷键 F12-css
查看>>
(JS高手不用看了!我只是在碎碎念,因为我也不知道面什么)JavaScript的算术运算...
查看>>
初学 Java Web 开发,请远离各种框架,从 Servlet 开发(转载)
查看>>
Oracle数据库设计范式
查看>>
Webform和MVC,为什么MVC更好一些?(转载)
查看>>
[转]《Hadoop基础教程》之初识Hadoop
查看>>
WordConuts
查看>>
详解事件委托
查看>>
AJAX的问题
查看>>
numpy中的ndarray与pandas中的series、dataframe的转换
查看>>
java前的部分了解(计算机小白)
查看>>
book_.Net与设计模式
查看>>
jquery.validate验证,jquery.Form插件提交,主要可以异步提交文件
查看>>