2022-06-19:给出n个数字,你可以任选其中一些数字相乘,相乘之后得到的新数字x,
x的价值是x的不同质因子的数量。
返回所有选择数字的方案中,得到的x的价值之和。
来自携程。

答案2022-06-19:

今晚在群里吹牛给耽误了,具体见代码。

代码用rust编写。代码如下:

use rand::Rng;
use std::collections::HashMap;
fn main() {
let n: isize = 10;
let v: isize = 20;
let test_time: i32 = 5000;
println!("测试开始");
for _i in 0..test_time {
let mut arr = random_array(n, v);
let ans1 = sum_of_values1(&mut arr);
let ans2 = sum_of_values2(&mut arr);
if ans1 != ans2 {
println!("出错了!");
for num in &arr {
print!("{} ", num);
}
println!("");
println!("ans1 = {}", ans1);
println!("ans2 = {}", ans2);
break;
}
}
println!("测试结束");
} // 工具!
// 返回num质数因子列表(去重)
// 时间复杂度,根号(num)
fn primes(mut num: isize) -> Vec<isize> {
let mut ans: Vec<isize> = vec![];
let mut i: isize = 2;
while i * i <= num && num > 1 {
if num % i == 0 {
ans.push(i);
while num % i == 0 {
num /= i;
}
}
i += 1;
}
if num != 1 {
ans.push(num);
}
return ans;
} fn sum_of_values1(arr: &mut Vec<isize>) -> isize {
return process1(arr, 0, 1);
} fn process1(arr: &mut Vec<isize>, index: isize, pre: isize) -> isize {
if index == arr.len() as isize {
return primes(pre).len() as isize;
}
let p1 = process1(arr, index + 1, pre);
let p2 = process1(arr, index + 1, pre * arr[index as usize]);
return p1 + p2;
} fn sum_of_values2(arr: &mut Vec<isize>) -> isize {
// key : 某个质数因子
// value : 有多少个数含有这个因子
let mut cnt_map: HashMap<isize, isize> = HashMap::new();
for num in arr.iter() {
for factor in primes(*num).iter() {
cnt_map.insert(
*factor,
if cnt_map.contains_key(factor) {
*cnt_map.get(factor).unwrap()
} else {
0
} + 1,
);
}
}
let n = arr.len() as isize;
let mut ans = 0;
// count :含有这个因子的数,有多少个
// others : 不含有这个因子的数,有多少个
for (_, count) in cnt_map.iter() {
let others = n - count;
ans += (power(2, *count) - 1) * power(2, others);
}
return ans;
} fn power(mut num: isize, mut n: isize) -> isize {
if n == 0 {
return 1;
}
let mut ans = 1;
while n > 0 {
if (n & 1) != 0 {
ans *= num;
}
num *= num;
n >>= 1;
}
return ans;
} // 为了测试
fn random_array(n: isize, v: isize) -> Vec<isize> {
let mut arr: Vec<isize> = vec![];
for _i in 0..n {
arr.push(rand::thread_rng().gen_range(0, v) + 1);
}
return arr;
}

执行结果如下:


左神java代码

2022-06-19:给出n个数字,你可以任选其中一些数字相乘,相乘之后得到的新数字x, x的价值是x的不同质因子的数量。 返回所有选择数字的方案中,得到的x的价值之和。 来自携程。的更多相关文章

  1. springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

    springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序 http://www.360doc.com/content/14/03 ...

  2. 科普:为什么 String hashCode 方法选择数字31作为乘子

    作者:coolblog 此文章转载自:https://segmentfault.com/a/1190000010799123 1. 背景 某天,我在写代码的时候,无意中点开了 String hashC ...

  3. P2034 选择数字

    P2034 选择数字 题目描述 给定一行n个非负整数a[1]..a[n].现在你可以选择其中若干个数,但不能有超过k个连续的数字被选择.你的任务是使得选出的数字的和最大. 错误日志: longlong ...

  4. codevs 3327 选择数字

    3327 选择数字  时间限制: 1 s  空间限制: 256000 KB 题目描述 Description 给定一行n个非负整数a[1]..a[n].现在你可以选择其中若干个数,但不能有超过k个连续 ...

  5. input只读属性 设置和移除 选择数字

    设置只读属性 $('#stage').attr("readonly", "readonly"); 移除 只读属性  $("input").r ...

  6. codevs3327选择数字(单调队列优化)

    3327 选择数字  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond     题目描述 Description 给定一行n个非负整数a[1]..a[n].现 ...

  7. python c++ 混合编程中python调用c++string返回类型的函数,python中返回为数字的解决办法

    本随笔解决 Python使用ctypes 调用c++dll 字符串返回类型函数,在python中显示为数字:原文解决方案见so: https://stackoverflow.com/questions ...

  8. P2034 选择数字——线性dp(单调队列优化)

    选择数字 题目描述 给定一行 \(n\) 个非负整数 \(a[1]...a[n]\) .现在你可以选择其中若干个数,但不能有超过 \(k\) 个连续的数字被选择.你的任务是使得选出的数字的和最大. 输 ...

  9. 「单调队列优化DP」P2034 选择数字

    「单调队列优化DP」P2034 选择数字 题面描述: 给定一行n个非负整数a[1]..a[n].现在你可以选择其中若干个数,但不能有超过k个连续的数字被选择.你的任务是使得选出的数字的和最大. 输入格 ...

  10. [SQL]用于提取组内最新数据,左连接,内连接,not exist三种方案中,到底谁最快?

    本作代码下载:https://files.cnblogs.com/files/xiandedanteng/LeftInnerNotExist20191222.rar 人们总是喜欢给出或是得到一个简单明 ...

随机推荐

  1. Spring源码分析之注册BeanDefinition

    测试代码 public class ContextApplication { public static void main(String[] args) { ClassPathXmlApplicat ...

  2. 加密脚本分析—evil.py

    加密脚本分析-evil.py 1.题目 源文件 一共两个文件 enc_flag.txt evil.py(原文件无注释) 1 # coding: utf-8 2 3 import base64 4 im ...

  3. 解放AI生产力——ComfyUI

    最近状态不好,所以这几天基本没干什么,就分享一下和AI绘画工作流有关的东西吧. 此前我都没有抱着一种教学的心态来写博客,因为我所掌握的东西实在太过简单,只要一说大家就会了,我害怕我在人群里失去自己的特 ...

  4. CAS 6.x + Delegated Authentication SAML2.0 配置记录

    最近领导派了一个活儿, 需要把我们CAS系统的身份识别交给甲方的系统, 甲方的系统是SAML2.0的协议. 由于之前对SAML2.0协议了解不多,折腾了不少时间,在这里记录一下.以后忘掉还可以看看. ...

  5. java异常--基础内容

    java异常--基础内容 异常指程序运行中出现的不期而至的各种状况:文件找不到,网络连接失败,非法参数... 异常发生在程序运行期间,他影响了正常的程序执行流程. 三种类型异常(Exception): ...

  6. MyBatisPlus 自动填充演示

    一.数据库 表中新增"添加时间"和"修改时间"字段:

  7. Ubuntu+uWSGI部署基于Django的API【鸿篇巨制,事无巨细】

    背景 任务: 视频翻译项目需要在两个服务器上进行通信(国内&海外的阿里服务器). 因为python是主语言,选用了Django 来快速部署API. 注:Django中文文档:https://d ...

  8. Alchemy Nft黑客松任务(第一周)

    Alchemy是什么项目? 2019年12月,Alchemy完成1500万美元A轮融资,资方为Pantera Capital,斯坦福大学,Coinbase,三星等. 2021年4月,Alchemy以5 ...

  9. 为什么我推荐你使用 systemd timer 替代 cronjob?

    概述 前几天在使用 Terraform + cloud-init 批量初始化我的实验室 Linux 机器.正好发现有一些定时场景需要使用到 cronjob, 进一步了解到 systemd timer ...

  10. CentOS安装时钟同步服务

    使用chrony用于时间同步 yum install chrony -y vim /etc/chrony.conf cat /etc/chrony.conf | grep -v "^#&qu ...