博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 5428 The Factor 分解质因数
阅读量:6874 次
发布时间:2019-06-26

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

The Factor 

Time Limit: 1 Sec  

Memory Limit: 256 MB

题目连接

http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=628&pid=1001

Description

有一个数列,FancyCoder沉迷于研究这个数列的乘积相关问题,但是它们的乘积往往非常大。幸运的是,FancyCoder只需要找到这个巨大乘积的最小的满足如下规则的因子:这个因子包含大于两个因子(包括它本身;比如,4有3个因子,因此它是满足这个要求的一个数)。你需要找到这个数字并输出它。但是我们知道,对于某些数可能没有这样的因子;在这样的情况下,请输出-1.

Input

输入文件的第一行有一个正整数T \ (1 \le T \le 15)T (1≤T≤15),表示数据组数。 接下去有TT组数据,每组数据的第一行有一个正整数n \ (1 \le n \le 100)n (1≤n≤100). 第二行有nn个正整数a_1, \ldots, a_n \ (1 \le a_1, \ldots ,a_n \le 2\times 10^9)a1,…,an (1≤a1,…,an≤2×109), 表示这个数列。

Output

输出TT行TT个数表示每次询问的答案。

Sample Input

231 2 356 6 6 6 6

Sample Output

64

HINT

 

题意

给你一个n个数

有一个数是由这N个数乘起来的,然后让你输出这个数的不是素数的最小的因子

题解:

对于每一个数都分解质因数,然后取最小的两个乘起来就好了

代码:

//qscqesze#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef long long ll;using namespace std;//freopen("D.in","r",stdin);//freopen("D.out","w",stdout);#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)#define maxn 110#define eps 1e-9int Num;//const int inf=0x7fffffff; //§ß§é§à§é¨f§3const int inf=0x3f3f3f3f;inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}//**************************************************************************************//****************************************************************// Miller_Rabin 算法进行素数测试//速度快,而且可以判断 <2^63的数//****************************************************************const int S=20;//随机算法判定次数,S越大,判错概率越小//计算 (a*b)%c. a,b都是long long的数,直接相乘可能溢出的// a,b,c <2^63long long mult_mod(long long a,long long b,long long c){ a%=c; b%=c; long long ret=0; while(b) { if(b&1){ret+=a;ret%=c;} a<<=1; if(a>=c)a%=c; b>>=1; } return ret;}//计算 x^n %clong long pow_mod(long long x,long long n,long long mod)//x^n%c{ if(n==1)return x%mod; x%=mod; long long tmp=x; long long ret=1; while(n) { if(n&1) ret=mult_mod(ret,tmp,mod); tmp=mult_mod(tmp,tmp,mod); n>>=1; } return ret;}//以a为基,n-1=x*2^t a^(n-1)=1(mod n) 验证n是不是合数//一定是合数返回true,不一定返回falsebool check(long long a,long long n,long long x,long long t){ long long ret=pow_mod(a,x,n); long long last=ret; for(int i=1;i<=t;i++) { ret=mult_mod(ret,ret,n); if(ret==1&&last!=1&&last!=n-1) return true;//合数 last=ret; } if(ret!=1) return true; return false;}// Miller_Rabin()算法素数判定//是素数返回true.(可能是伪素数,但概率极小)//合数返回false;bool Miller_Rabin(long long n){ if(n<2)return false; if(n==2)return true; if((n&1)==0) return false;//偶数 long long x=n-1; long long t=0; while((x&1)==0){x>>=1;t++;} for(int i=0;i
=n)p=Pollard_rho(p,rand()%(n-1)+1); findfac(p); findfac(n/p);}//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ll p[maxn];int main(){ int t=read(); while(t--) { int n=read(); memset(Div,0,sizeof(Div)); tot=0; for(int i=1;i<=n;i++) { scanf("%I64d",&p[i]); if(p[i]!=1) findfac(p[i]); } sort(Div,Div+tot); if(tot<=1) printf("-1\n"); else { cout<
<

 

转载地址:http://qtofl.baihongyu.com/

你可能感兴趣的文章
使用音频转换器怎么转换电影的格式?
查看>>
35. Search Insert Position
查看>>
webpack—url-loader 解决项目中图片打包路径问题
查看>>
thinkphp源码分析(四)—错误及异常处理篇
查看>>
Vue实现类似Spring官网图片滑动效果
查看>>
前嗅ForeSpider教程:数据浏览与可视化
查看>>
js 读取 input[type=file] 内容,直接显示文本 | 图片
查看>>
软件开发学习的5大技巧,你知道吗?
查看>>
每日两道前端面试题20190226
查看>>
Git常用命令总结
查看>>
python 装饰器 part1
查看>>
2018回顾
查看>>
vue组件文档(.md)中自动导入示例(.vue)
查看>>
207. Course Schedule
查看>>
h5仿钉钉实战|仿钉钉聊天|仿钉钉模板界面
查看>>
去京东面试经验总结
查看>>
以太坊数据结构MPT
查看>>
AI如何赋能传统的物业公司?
查看>>
从koa-session源码解读session本质
查看>>
记录下死磕过的一个坑
查看>>