链接:https://ac.nowcoder.com/acm/contest/940/E

题目描述

kotori拿到了一些正整数。她决定从每个正整数取出一个素因子。但是,kotori有强迫症,她不允许两个不同的正整数取出相同的素因子。

她想知道,最终所有取出的数的和的最小值是多少?

注:若a%k==0,则称k是a的因子。若一个数有且仅有两个因子,则称其是素数。显然1只有一个因子,不是素数。

输入描述:

第一行一个正整数n,代表kotori拿到正整数的个数。

第二行共有n个数ai,表示每个正整数的值。

保证不存在两个相等的正整数。

1<=n<=10

2<=ai<=1000

输出描述:

一个正整数,代表取出的素因子之和的最小值。若不存在合法的取法,则输出-1。
示例1

输入

复制

4
12 15 28 22

输出

复制

17

说明

分别取3,5,7,2,可保证取出的数之和最小
示例2

输入

复制

5
4 5 6 7 8

输出

复制

-1

备注:

1<=n<=10

2<=ai<=1000

思路:对每个数先进行拆分素数,然后暴力搜就行。
代码:
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define INF 2000000000
#define eps 1e-8
#define pi 3.141592653589793
const LL mod = 1e9+;
int k,prime[],x[],n;
int mp[],ans = ;
vector<int>v[];
void init(){
k = ;
prime[k] = ;k++;
prime[k] = ;k++;
for(int i = ; i <= ; i++){
int end = sqrt(i);
int flag = ;
for(int j = ; j <= end ; j++){
if(i%j == ){
flag = ;break;
}
}
if(flag == ) {
prime[k]=i;
k++;
}
}
}
void dfs(int dep,int sum){
if(dep == n){
ans = min(ans,sum);return;
}
for(int i = ; i < v[dep].size() ; i ++){
if(!mp[v[dep][i]]){
mp[v[dep][i]] = ;
dfs(dep+,sum+v[dep][i]);
mp[v[dep][i]] = ;
}
}
}
int main()
{
init();
scanf("%d",&n);
int flag = ;
memset(mp,,sizeof(mp));
for(int i = ; i < n ; i ++){
scanf("%d",&x[i]);
for(int j = ; j < k ; j++){
int number = x[i];
if(number%prime[j] == ){
v[i].push_back(prime[j]); while(number%prime[j] == ){
number/=prime[j];
}
}
if(number == )break;
}
}
dfs(,);
printf("%d\n",ans == ?-:ans);
}
/*
5
4 5 66 29 124
*/


北京信息科技大学第十一届程序设计竞赛E-- kotori和素因子(深搜)的更多相关文章

  1. 北京信息科技大学第十一届程序设计竞赛(重现赛)I

    I andy种树 题目链接:https://ac.nowcoder.com/acm/contest/940/I 题目描述 andy在他的庄园里种了n棵树,排列成一排,标号为1到n.最开始的时候n棵树的 ...

  2. 北京信息科技大学校赛 题解 | AK记录贴

    比赛链接:https://ac.nowcoder.com/acm/contest/940#question 花了一天时间全部解决,题目不难,全是基础题+模板题. A - kotori和糖果 链接:ht ...

  3. (java保留n位小数)precise math function 北京信息科技大学第十届ACM程序设计竞赛 第2题

    precise math function Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Othe ...

  4. 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛题解

    链接:https://www.nowcoder.com/acm/contest/118/A 来源:牛客网 PUBG 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语 ...

  5. 桂林电子科技大学第三届ACM程序设计竞赛 G 路径

    链接:https://ac.nowcoder.com/acm/contest/558/G来源:牛客网 小猫在研究树. 小猫在研究路径. 给定一棵N个点的树,每条边有边权,请你求出最长的一条路径,满足经 ...

  6. 重复 桂林电子科技大学第三届ACM程序设计竞赛

    题目链接:https://ac.nowcoder.com/acm/contest/558/B import java.util.HashSet; import java.util.Scanner; p ...

  7. 相聚 桂林电子科技大学第三届ACM程序设计竞赛

    题目链接:https://ac.nowcoder.com/acm/contest/558/D 就是求有多少块区域,用DFS就可以解决,一遇到一个1就从其开始深搜,将其所在的区域块覆灭(变为0),再遇到 ...

  8. 分离 桂林电子科技大学第三届ACM程序设计竞赛

    链接:https://ac.nowcoder.com/acm/contest/558/H 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  9. 区间 桂林电子科技大学第三届ACM程序设计竞赛

    链接:https://ac.nowcoder.com/acm/contest/558/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

随机推荐

  1. jquery全屏图片滑动切换

    在线演示 本地下载

  2. day39-Spring 14-Spring的JDBC模板:DBCP连接池配置

    一般常用的连接池是DBCP和C3P0. package cn.itcast.spring3.demo1; import java.sql.DriverManager; import org.junit ...

  3. Leetcode784.Letter Case Permutation字母大小写全排列

    给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串.返回所有可能得到的字符串集合. 示例: 输入: S = "a1b2" 输出: ["a1 ...

  4. 阿里云应用高可用 AHAS 正式商用,可一键提升云上应用可用性

    在分布式架构环境下,服务间的依赖日益复杂,可能没有人能说清单个故障对整个系统的影响,构建一个高可用的分布式系统面临着很大挑战. 7月17日,阿里云应用高可用服务AHAS 正式商用,包含架构感知.流控降 ...

  5. jQuery $.isNumeric vs. $.isNaN vs. isNaN

    在jQuery中,有几种方式可以判断一个对象是否是数字,或者可否转换为数字. 首先,jQuery.isNaN()在最新版本中已经被移除了(1.7之后),取而代之的是  jQuery.isNumeric ...

  6. Linux保证运行一个实例

    1. ; // 默认最大路径长度 inline std::string current_exe_name() { }; int ret = readlink("/proc/self/exe& ...

  7. 文字渐变效果:图层中的mask属性

    http://www.cocoachina.com/ios/20150716/12571.html 前言 已经很久没写blog了,最近发生了太多事情,失去了生命中一位很重要的成员,使我不得不放下对技术 ...

  8. part12.5-定时器去抖

  9. 13-2 jquery介绍

    1 什么是 jQuery jQuery 是 js 的一个库,封装了我们开发过程中常用的一些功能,方便我们调用,提高开发效率. js库是把我们常用的功能放到一个单独的文件中,我们用的时候,直接引用到页面 ...

  10. Jmeter If控制器

    "${xxx}"=="1" 或者 "${xxx}"!="2"