2024年4月13日美团春招实习试题【第四题:乘积因子数】-题目+题解+在线评测【二分】

2024年4月13日美团春招实习试题【第四题:乘积因子数】-题目+题解+在线评测【二分】

  • 题目描述:
    • 输入描述
    • 输出描述
    • 样例
  • 解题思路一:python
  • 解题思路二:c++
  • 解题思路三:0

题目描述:

塔子哥拿到了一个数组,她有q次查询,每次询问一个区间内所有元素的乘积有多少因子。你能帮帮她吗?

注:由于数组元素过多,所以是按连续段的方式给定。例如,[1,1,2,3,3,3]有2个1,1个2,3个3,因此表示为<2,1>,<1,2>,< 3,3>。

输入描述

第一行输入两个正整数n,m,代表数组的大小,以及连续段的数量。 接下来的m行,每行输入两个正整数 u i , v i u_i,v_i ui,vi,代表一段区间内有 v i v_i vi u i u_i ui

接下来的一行输入一个正整数q,代表询问次数。 接下来的q行,每行输入两个正整数l,r,代表询问的是第l个数到第r个数的乘积的因子数量

1 ≤ n ≤ 1 0 14 1\le n\le 10^{14} 1n1014

1 ≤ m , q ≤ 1 0 5 1\le m,q\le 10^5 1m,q105

1 ≤ u _ i ≤ 10 1\le u\_i\le 10 1u_i10

1 ≤ v _ i ≤ 1 0 9 1\le v\_i\le 10^9 1v_i109

1 ≤ l , r ≤ n 1\le l,r\le n 1l,rn

保证所有的 v i v_i vi之和恰好等于n

输出描述

输出q行,每行输出一个整数,代表最终的乘积因子数量。由于答案可能过大,请对109+7取模

样例

输入

6 3
1 2
2 1
3 3
2 
1 3
2 6

输出

2
8

OJ链接:
https://codefun2000.com/p/P1822

乘积因子数量是指一个数的所有因子(包括1和它本身)的个数。要计算一个数的乘积因子数量,可以按照以下步骤进行:

将这个数分解成质因数的乘积。质因数是指不能再进行因数分解的素数,比如2、3、5、7等。
对每个质因数的指数加1,然后将它们相乘即可得到乘积因子数量。
举个例子,我们来计算数值36的乘积因子数量:

首先,将36分解成质因数的乘积:36=22 ×3 2
对每个质因数的指数加1:(2+1)×(2+1)=3×3=9
所以,36的乘积因子数量为9个。

解题思路一:python

在这里插入图片描述

# from bisect import bisect_left
n, m = map(int, input().split())
mod = 1000000007table = {1: [0, 0, 0, 0],2: [1, 0, 0, 0],3: [0, 1, 0, 0],4: [2, 0, 0, 0],5: [0, 0, 1, 0],6: [1, 1, 0, 0],7: [0, 0, 0, 1],8: [3, 0, 0, 0],9: [0, 2, 0, 0],10: [1, 0, 1, 0]
}index = [0 for i in range(1 + m)]
array = [0 for i in range(1 + m)]
pre = [[0 for i in range(4)] for j in range(1 + m)]for i in range(1, m + 1):u, v = map(int, input().split())array[i] = uu_list = table[u]for j in range(4):pre[i][j] = (pre[i - 1][j] + u_list[j] * v % mod) % modindex[i] = index[i - 1] + vdef check(index, m, x):l = 1r = m + 1while l < r:mid = (l + r) >> 1# if index[mid] == x:#     return midif index[mid] < x:l = mid + 1else:r = midreturn lq = int(input())
for i in range(q):l, r = map(int, input().split())ll = check(index, m, l)rl = check(index, m, r)# print(ll, rl)ans = 1lu_list = table[array[ll]]ru_list = table[array[rl]]for j in range(4):if ll == rl:ans = ((r - l + 1) * lu_list[j] % mod + 1) * ans % modelse:tmp = (index[ll] - l + 1) % mod * lu_list[j] % modif ll < rl:tmp += (r - index[rl - 1]) % mod * ru_list[j] % modif ll + 1 < rl:tmp = (tmp + (pre[rl - 1][j] - pre[ll][j])) % mod# tmp = (tmp % mod + mod) % modans = (tmp + 1) * ans % modprint(ans)

时间复杂度:O(qlogn)
空间复杂度:O(m)前缀和

解题思路二:c++

#include <bits/stdc++.h>using namespace std;typedef long long LL;
#define endl '\n'int main()
{cin.tie(0)->sync_with_stdio(false);LL n, m, q;cin >> n >> m;const int mod = 1e9 + 7;vector<int> primes = {2, 3, 5, 7};vector<LL> s(m + 1);vector<int> a(m + 1);vector<array<LL, 4>> pre = vector<array<LL, 4>>(m + 1, {0});auto get = [&](int x) -> vector<int> {vector<int> cnt(4, 0);for (int j = 0;j < 4;++ j) {while(x % primes[j] == 0) {x /= primes[j];++ cnt[j];}}return cnt;};for (int i = 1; i <= m; ++i){cin >> a[i] >> s[i];pre[i] = pre[i - 1];vector<int> cnt = get(a[i]);for (int j = 0;j < 4;++ j) {pre[i][j] = (pre[i][j] + cnt[j] * s[i]) % mod;}s[i] += s[i - 1];}cin >> q;while (q --) {LL l, r;cin >> l >> r;int L = lower_bound(s.begin(), s.end(), l) - s.begin();int R = lower_bound(s.begin(), s.end(), r) - s.begin();vector<int> cnt(4, 0);vector<int> cntl = get(a[L]), cntr = get(a[R]);LL ans = 1;for (int j = 0;j < 4;++ j) {if (L == R) {ans = ((r - l + 1) * cntl[j] % mod + 1) * ans % mod;} else {LL t = (s[L] - l + 1) % mod * cntl[j] % mod;if (L < R) {t += (r - s[R - 1]) % mod * cntr[j] % mod;}if (L + 1 < R) {t += pre[R - 1][j] - pre[L][j];}t = (t % mod + mod) % mod;ans = (t + 1) * ans % mod;}}cout << ans << endl;}
}

时间复杂度:O(qlogn)
空间复杂度:O(m)前缀和

解题思路三:0


时间复杂度:O(n)
空间复杂度:O(n)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/823127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP/1.1特性总结

优点 【简单&#xff0c;灵活和易于扩展&#xff0c;应用广泛和跨平台】 1.简单&#xff1a; http基本的报文格式就是headerbody&#xff0c;头部信息也是key-value简单的文本形式&#xff0c;易于理解&#xff0c;降低了学习和使用的门槛 2.灵活和易于扩展&#xff1a; &…

Redis 配置与使用 (Linux 虚拟机Windows客户端)

Centos7 安装Redis详细教程 - JcongJason - 博客园 (cnblogs.com) 安装 下载redis安装包并解压 # 下载&#xff0c;我是在root下执行的下载&#xff0c;所以我的下载目录为&#xff1a;/root/redis-5.0.5&#xff0c;这里按照自己的实际情况调整 wget https://download.redi…

Methoxy PEG Glutaric Acid可以改善物质的溶解性、稳定性和生物相容性

【试剂详情】 英文名称 mPEG-GA&#xff0c;mPEG-Glutaric Acid&#xff0c; Methoxy PEG GA&#xff0c; Methoxy PEG Glutaric Acid 中文名称 聚乙二醇单甲醚戊二酸&#xff0c; 甲氧基-聚乙二醇-戊二酸 外观性状 由分子量决定&#xff0c;固体或液体 分子量 400&…

浅谈Java的synchronized 锁以及synchronized 的锁升级

在Java中&#xff0c;synchronized关键字用于实现线程间的同步&#xff0c;确保同一时刻只有一个线程能够访问被同步的代码块或方法。当一个线程获得synchronized锁定后&#xff0c;其他试图访问同一锁的线程将被阻塞&#xff0c;直到锁被释放。 synchronized锁有两种基本形式…

为什么说六西格玛培训公司是企业问题的“终结者”

随着六西格玛管理方法的走红&#xff0c;六西格玛培训公司应运而生&#xff0c;致力于帮助企业解决各种核心问题&#xff0c;实现业绩的飞跃。那么&#xff0c;六西格玛培训公司究竟能为企业解决哪些问题&#xff1f;又为什么说六西格玛培训公司是企业问题的“终结者”呢&#…

第47期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

【第3期】PMC对话标杆用户:兆原数通在SeaTunnel的应用实践

&#x1f4e3;随着技术快速发展&#xff0c;企业对数据系统的现代化改造需求日益增加。在这种背景下&#xff0c;如何在保持业务连续性的同时&#xff0c;实现数据系统的平滑迁移与升级呢&#xff1f;加入我们的本期技术访谈节目&#xff0c;来听听李洪军老师分享他们如何利用S…

算法题解记录11+++从前序与中序遍历序列构造二叉树(百日筑基)

题目描述&#xff1a; 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,…

树莓派驱动开发--iic篇(JY901S陀螺仪的三轴角度简单读取)

前言&#xff1a;既然大家都到了这步&#xff0c;想必对驱动开发有着一定的理解啦吧&#xff01;&#xff01;那我在前面说一下流程&#xff1a; 修改编译设备树》》》编写编译驱动文件》》》编写编译app文件》》》ftp挂载将前面3复制到树莓派的对应位置》》》加载驱动模块》》…

2024软件测试自动化框架都有哪些?

软件行业正迈向自主、快速、高效的未来。为了跟上这个高速前进的生态系统的步伐&#xff0c;必须加快应用程序的交付时间&#xff0c;但不能以牺牲质量为代价。快速实现质量是必要的&#xff0c;因此质量保证得到了很多关注。为了满足卓越的质量和更快的上市时间的需求&#xf…

策略者模式(代码实践C++/Java/Python)————设计模式学习笔记

文章目录 1 设计目标2 Java2.1 涉及知识点2.2 实现2.2.1 实现两个接口飞行为和叫行为2.2.2 实现Duck抽象基类&#xff08;把行为接口作为类成员&#xff09;2.2.3 实现接口飞行为和叫行为的具体行为2.2.4 具体实现鸭子2.2.5 模型调用 3 C&#xff08;用到了大量C2.0的知识&…

数据库SQL语言实战(三)

删除操作 本篇文章重点在于SQL中的各种删除操作 题目一 删除表中的学号不全是数字的那些错误数据&#xff0c;学号应该是数字组成&#xff0c;不能够包含字母空格等非数字字符。方法之一&#xff1a;用substr函数&#xff0c;例如Substr(sid,1,1)返回学号的第一位&#xff0…

C++常考面试题(第二篇)

【题目 16】拷贝构造函数的格式和作用&#xff0c;自动调用拷贝构造函数的几种情形&#xff1f; 格式&#xff1a;没有返回值 函数名和类名相同 参数&#xff1a;const person& 类型引用 作用&#xff1a;逐个给成员变量进行赋值三种情形下会调用拷贝构造函数 (1) 当用一…

Zynq学习笔记--AXI 总线仿真(AXI VIP)

目录 1. 概述 2. Simulation with AXI VIP 2.1 axi_vip_pkg 2.2 design_1_axi_vip_0_0_pkg 2.3 参数指定 3. 实例化注意事项 3.1 名称对应关系 3.2 寄存器地址 3.3 block design 1. 概述 AXI Verification IP&#xff08;AXI VIP&#xff09;是一种用于验证AXI总线协议的…

09 SQL进阶 -- SQL高级处理 -- 窗口函数等

1. 窗口函数 1.1 窗口函数概念及基本的使用方法 窗口函数也称为 OLAP 函数。OLAP 是 OnLine AnalyticalProcessing 的简称,意思是对数据库数据进行实时分析处理。 为了便于理解,称之为窗口函数。常规的 SELECT 语句都是对整张表进行查询,而窗口函数可以让我们有选择的去某…

Spring @Transactional 注解

官方文档&#xff1a;https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/annotations.html#:~:textThe%20%40Transactional%20annotation%20is%20metadata,suspending%20any%20existing%20transaction%22). 推荐阅读&#xff1a;https:…

基于springboot实现大创管理系统【项目源码+论文说明】计算机毕业设计

基于springboot实现大创管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了大创管理系统的开发全过程。通过分析大创管理系统管理的不足&#xff0c;创建了一个计算机管理大创管理系统的方案。文章介…

Re65:读论文 GPT-3 Language Models are Few-Shot Learners

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文全名&#xff1a;Language Models are Few-Shot Learners ArXiv网址&#xff1a;https://arxiv.org/abs/2005.14165 2020 NeurIPS&#xff1a;https://papers.nips.cc/paper/2020/hash/1457c0d6bfcb49674…

集成sa-token实现登录和RBAC权限控制

集成sa-token实现登录和RBAC权限控制 文章目录 1.sa-token是什么&#xff1f;1.1简介1.2官网1.3 Sa-Token 功能一览1.4 功能结构图 2.集成sa-token及配置2.1 pom依赖2.2 yaml配置2.3 代码配置 4.RBAC权限控制表设计5.菜单权限树构造实现5.1菜单权限数据sql查询5.2菜单权限树构建…

solidity(10)

&#x1f52e; Solidity变量指南&#xff1a;探寻状态、局部和全局三界之秘&#x1f30c; 在Solidity的神秘大陆上&#xff0c;变量就像是散落在时间和空间中的宝石&#x1f48e;&#xff0c;每颗都有它独特的魔力和作用域。掌握这三种变量&#xff0c;是成为合约法师的重要一…