news 2026/5/5 21:15:15

子数列求积【牛客tracker 每日一题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
子数列求积【牛客tracker 每日一题】

子数列求积

时间限制:1秒 空间限制:256M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

给定一个长度为n nn的正整数序列 {a 1 , a 2 , … , a n a_1,a_2,…,a_na1,a2,,an} 。接下来有q qq次独立查询,第j jj次查询给出一对下标l j , r j l_j,r_jlj,rj,请你计算区间乘积

∏ i = l j r j a i ∏_{i=l_j}^{r_j}a_ii=ljrjai

并对模数10 9 + 7 10^9+7109+7取模后的结果。

输入描述:

第一行输入两个整数n , q ( 1 ≦ n , q ≦ 10 5 ) n,q(1≦n,q≦10^5)n,q(1n,q105),分别表示序列长度与查询数量。
第二行输入n nn个整数a 1 , a 2 , … , a n ( 1 ≦ a i < 10 9 + 7 ) a_1,a_2,…,a_n(1≦a_i<10^9+7)a1,a2,,an(1ai<109+7),表示序列元素。
此后q qq行,第j jj行输入两个整数l j , r j ( 1 ≦ l j ≦ r j ≦ n ) l_j,r_j(1≦l_j≦r_j≦n)lj,rj(1ljrjn),表示一次查询的左右端点。

输出描述:

输出一行q qq个用空格隔开的整数,第j jj个整数为第j jj次查询的答案。

示例1

输入:

5 3 1 2 3 4 5 1 2 1 3 2 5

输出:

2 6 120

说明:

区间[ 1 , 2 ] [1,2][1,2]的乘积为1 × 2 = 2 1×2=21×2=2[ 1 , 3 ] [1,3][1,3]的乘积为 1×2×3=6;[ 2 , 5 ] [2,5][2,5]的乘积为2 × 3 × 4 × 5 = 120 2×3×4×5=1202×3×4×5=120

解题思路

本题采用前缀积结合费马小定理+快速幂求逆元的方法求解区间乘积模运算问题,模数10 9 + 7 10^9+7109+7是质数;首先初始化前缀积数组s u m , s u m [ 0 ] = 1 , s u m [ i ] sum,sum[0]=1,sum[i]sumsum[0]=1sum[i]存储序列前i项元素的乘积对模数取模的结果,遍历序列完成O ( n ) O(n)O(n)的前缀积预处理;编写快速幂函数f p fpfp,实现高效的幂次取模计算;根据费马小定理,质数模数下a aa的乘法逆元为a p − 2 m o d p a^{p-2} \mod pap2modp,因此区间[ l , r ] [l,r][l,r]的乘积等于( s u m [ r ] × f p ( s u m [ l − 1 ] , p − 2 ) ) m o d p (sum[r] × fp(sum[l-1], p-2)) \mod p(sum[r]×fp(sum[l1],p2))modp;对每组查询直接套用公式计算结果,单次查询耗时O ( l o g p ) O(logp)O(logp)。该方法总时间复杂度O ( n + q l o g p ) O(n+qlogp)O(n+qlogp),完美适配n 、 q ≤ 10 5 n、q≤10^5nq105的规模,高效且精准完成所有区间乘积的模运算查询。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefpair<ll,ll>pii;constll p=1e9+7;constll N=1e5+10;ll a[N],sum[N];llfp(ll a,ll b){ll ans=1;while(b){if(b&1)ans=ans*a%p;a=a*a%p;b>>=1;}returnans;}intmain(){ll T=1;while(T--){ll n,q;cin>>n>>q;sum[0]=1;for(ll i=1;i<=n;i++){cin>>a[i];sum[i]=sum[i-1]*a[i]%p;}while(q--){ll l,r;cin>>l>>r;cout<<sum[r]*fp(sum[l-1],p-2)%p<<" ";}}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 5:24:11

预装智能办公软件,打造企业专属数字工作台

数据成为新生产要素&#xff0c;算法成为新生产力&#xff0c;这场由技术驱动的深层经济逻辑变革&#xff0c;影响着这个时代的每一个人&#xff0c;迫使每一个组织重新审视自己的价值链条与核心竞争力。每个企业需要深化技术与业务流程的结合应用&#xff0c;如何在保障数据主…

作者头像 李华
网站建设 2026/5/2 23:17:34

基于微信小程序的方言粤语文化传播平台的设计与开发PHP_nodejs_vue+uniapp

文章目录方言粤语文化传播平台的设计与开发摘要系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;方言粤语文化传播平台的设计与开发摘要 该平台基于微信小程序生态&#xff0c;结合PHP、Node.js、V…

作者头像 李华
网站建设 2026/5/3 2:44:44

从局域网到随时随地:Obsidian有了cpolar用起来才顺手

Obsidian 的核心功能是帮助用户构建知识网络&#xff0c;通过双向链接将不同笔记关联起来&#xff0c;就像给信息搭起一座座桥梁&#xff0c;图谱视图则能把这些关联可视化&#xff0c;让用户快速看清内容间的逻辑。此外&#xff0c;它支持插件扩展&#xff0c;能满足自动同步、…

作者头像 李华
网站建设 2026/4/26 3:33:54

计算机网络期末焚决 2024级

计算机网络期末复习指南&#xff08;2024级&#xff09;重点知识梳理OSI七层模型与TCP/IP四层模型的对应关系及每层核心协议需重点掌握。物理层关注传输介质与信号编码&#xff0c;数据链路层需理解MAC地址、交换机工作原理&#xff0c;网络层掌握IP协议、子网划分与路由算法&a…

作者头像 李华
网站建设 2026/5/1 1:00:03

ArcGIS大师之路500技---059分割面

文章目录前言一、需求说明二、分割面前言 本文介绍使用分割面工具实现在同一个数据库中用一个选中的面要求裁切另一个图层的面要素和一条选中的线要素裁切另一个图层的面要素。 一、需求说明 样例数据如下图&#xff0c;一个线图层&#xff0c;两个面图层。三个要素类位于一个…

作者头像 李华