HJ154 kotori和素因子

  • 题目
  • 题解(43)
  • 讨论(12)
  • 排行

中等 通过率:43.74% 时间限制:1秒 空间限制:256M

知识点数论数学

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

描述

kotori 拿到 nn 个互不相同 的正整数 a1,a2,...,ana1​,a2​,...,an​。她要从每个 aiai​ 中选出一个素因子 pipi​,要求所有选出的素因子两两不同,即 pi≠pj  (i≠j)pi​​=pj​(i​=j)。

若无法满足要求输出 −1−1;否则输出所有选出的素因子之和 ∑i=1npii=1∑n​pi​ 的最小可能值。

输入描述:

第一行输入整数 n(1≦n≦10)n(1≦n≦10)。

第二行输入 nn 个两两不同的整数 ai(2≦ai≦1000)ai​(2≦ai​≦1000)。

输出描述:

若存在合法选取方案,输出最小可能和;否则输出 −1−1。

示例1

输入:

复制代码
4
12 15 28 22

复制输出:

复制代码
17

复制说明:

复制代码
可取素因子 [3,5,7,2][3,5,7,2],和为 1717;任意合法方案的和都不小于 1717。

示例2

输入:

复制代码
5
4 5 6 7 8

复制输出:

复制代码
-1
cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int n;
int a[1010];//正整数的值
int mi=1e9;
//判断是否为质数
bool primer(int x){
   for(int i=2;i*i<=x;i++){
       if(x%i==0){
           return false;
       }
   }
    return true;
}
void dfs(int x,set<int> s,int temp){
    if(x==n){
        mi=min(mi,temp);
        return;
    }
    for(int i=2;i<=a[x];i++){
        if(a[x]%i==0 && primer(i)&&!s.count(i)){
            s.insert(i);
            dfs(x+1,s,temp+i);
            s.erase(i);
        }
    }
}
int  main(){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    set<int> s;
    dfs(0,s,0);
    if(mi==1e9)cout<<-1;
    else cout<<mi;
    return 0;
    
}
相关推荐
多加点辣也没关系18 小时前
数据结构与算法|第六章:队列
数据结构·算法·队列
_深海凉_18 小时前
LeetCode热题100-分割回文串
算法·leetcode·职场和发展
我是无敌小恐龙19 小时前
Java基础入门Day10 | Object类、包装类、大数/日期类、冒泡排序与Arrays工具类 超详细总结
java·开发语言·数据结构·算法·贪心算法·排序算法·动态规划
ADI_OP19 小时前
用SigmaStudio+软件来开发ADSP-21565
算法·音视频·adi dsp中文资料·adi音频dsp·adi dsp开发教程
yuanyuan2o219 小时前
从最小项目开始的 CMake 教程
c语言·开发语言·arm开发·c++·makefile·make·cmake
城事漫游Molly19 小时前
研究设计核心 Toolkit:从“知道方法”到“真正会设计”
大数据·人工智能·算法·ai写作·论文笔记
xh didida20 小时前
算法 -- 位运算
开发语言·c++·算法
hele_two20 小时前
VS Code + CMake 调用 SDL2 & SDL2_image 完整编译教程(Windows 平台)
c++·windows·vscode·图形渲染
祁_z21 小时前
大模型轻量化:模型格式选型(ONNX/GGUF/TFLite) + 压缩三剑客(量化/剪枝/蒸馏)+ 大模型推理执行流程介绍
算法·机器学习·剪枝·量化·蒸馏·大模型轻量化