当前位置:网站首页>Sum of factor numbers of interval product
Sum of factor numbers of interval product
2022-06-28 17:03:00 【solego】
The question :
Given a length of n n n Array of a a a, Each number in the array is not greater than 3 3 3 The positive integer . It is known that the weight of an interval is the number of factors of the product of all numbers in the interval , Find the sum of the weights of all intervals . The answer is right 1 e 9 + 7 1e9+7 1e9+7 modulus .
Data range :
1 ≤ n ≤ 1 0 5 1\leq n\leq 10^5 1≤n≤105
1 ≤ a i ≤ 3 1\leq a_i\leq 3 1≤ai≤3
Answer key :
a number x x x The number of factors for is :
take x x x Split into the product form of all prime factors , Count the number of each germplasm factor , The first i i i A quality factor p i p_i pi The quantity of is c n t p i cnt_{p_i} cntpi
So count x x x The number of factors for is : ∏ i = 1 ( c n t p i + 1 ) \prod\limits_{i=1} (cnt_{p_i}+1) i=1∏(cntpi+1)
p r e 2 i = ∑ j = 1 i [ a j = 2 ] pre2_i = \sum\limits_{j=1}^i [a_j=2] pre2i=j=1∑i[aj=2] , p r e 3 i = ∑ j = 1 i [ a j = 3 ] pre3_i = \sum\limits_{j=1}^i [a_j=3] pre3i=j=1∑i[aj=3]
p p r e 2 i = ∑ j = 1 i p r e 2 j ppre2_i = \sum\limits_{j=1}^i pre2_j ppre2i=j=1∑ipre2j, p p r e 3 i = ∑ j = 1 i p r e 3 j ppre3_i=\sum\limits_{j=1}^i pre3_j ppre3i=j=1∑ipre3j
m u l 2 3 i = ∑ j = 1 i p r e 2 j × p r e 3 j mul23_i = \sum\limits _{j=1}^{i}pre2_j\times pre3_j mul23i=j=1∑ipre2j×pre3j
For the interval weight in the topic , Equivalent to ( p r e 2 + 1 ) × ( p r e 3 + 1 ) (pre2+1)\times (pre3+1) (pre2+1)×(pre3+1).
So the question is : ∑ r = 1 n ∑ l = 1 r ( p r e 2 r − p r e 2 l − 1 + 1 ) × ( p r e 3 r − p r e 3 l − 1 + 1 ) \sum\limits_{r=1}^{n}\sum\limits_{l=1}^{r} (pre2_r-pre2_{l-1}+1)\times (pre3_r-pre3_{l-1}+1) r=1∑nl=1∑r(pre2r−pre2l−1+1)×(pre3r−pre3l−1+1)
Simplification :
( p r e 2 r − p r e 2 l − 1 + 1 ) × ( p r e 3 r − p r e 3 l − 1 + 1 ) = p r e 2 r × p r e 3 r − p r e 2 r × p r e 3 l − 1 + p r e 2 r − p r e 2 l − 1 × p r e 3 r + p r e 2 l − 1 × p r e 3 l − 1 − p r e 2 l − 1 + p r e 3 r − p r e 3 l − 1 + 1 = ( p r e 2 r × p r e 3 r + p r e 2 r + p r e 3 r + 1 ) ① + ( p r e 2 l − 1 × p r e 3 l − 1 ) ② − ( p r e 2 l − 1 × ( p r e 3 r + 1 ) + p r e 3 l − 1 × ( p r e 2 r + 1 ) ) ③ (pre2_r-pre2_{l-1}+1)\times (pre3_r-pre3_{l-1}+1) \\ =pre2_r\times pre3_r - pre2_r\times pre3_{l-1}+pre2_r-pre2_{l-1}\times pre3_r+pre2_{l-1}\times pre3_{l-1}-pre2_{l-1}+ pre3_r-pre3_{l-1}+1 \\ = (pre2_r\times pre3_r+pre2_r+pre3_r+1)_{①}+(pre2_{l-1}\times pre3_{l-1})_{②}-(pre2_{l-1}\times (pre3_r+1)+pre3_{l-1}\times (pre2_r+1))_{③} (pre2r−pre2l−1+1)×(pre3r−pre3l−1+1)=pre2r×pre3r−pre2r×pre3l−1+pre2r−pre2l−1×pre3r+pre2l−1×pre3l−1−pre2l−1+pre3r−pre3l−1+1=(pre2r×pre3r+pre2r+pre3r+1)①+(pre2l−1×pre3l−1)②−(pre2l−1×(pre3r+1)+pre3l−1×(pre2r+1))③
Sum the above three expressions respectively :
① ∑ r = 1 n ∑ l = 1 r ( p r e 2 r × p r e 3 r + p r e 2 r + p r e 3 r + 1 ) = ∑ r = 1 n r × ( p r e 2 r × p r e 3 r + p r e 2 r + p r e 3 r + 1 ) \sum\limits_{r=1}^{n}\sum\limits_{l=1}^{r} (pre2_r\times pre3_r+pre2_r+pre3_r+1)\\ =\sum\limits_{r=1}^{n} r\times (pre2_r\times pre3_r+pre2_r+pre3_r+1) r=1∑nl=1∑r(pre2r×pre3r+pre2r+pre3r+1)=r=1∑nr×(pre2r×pre3r+pre2r+pre3r+1)
② ∑ r = 1 n ∑ l = 1 r ( p r e 2 l − 1 × p r e 3 l − 1 ) = ∑ r = 1 n m u l 2 3 r − 1 \sum\limits_{r=1}^{n}\sum\limits_{l=1}^{r} (pre2_{l-1}\times pre3_{l-1}) \\ = \sum\limits_{r=1}^{n}mul23_{r-1} r=1∑nl=1∑r(pre2l−1×pre3l−1)=r=1∑nmul23r−1
③ ∑ r = 1 n ∑ l = 1 r − ( p r e 2 l − 1 × ( p r e 3 r + 1 ) + p r e 3 l − 1 × ( p r e 2 r + 1 ) ) = − ∑ r = 1 n ∑ l = 1 r ( p r e 2 l − 1 × ( p r e 3 r + 1 ) + p r e 3 l − 1 × ( p r e 2 r + 1 ) ) = − ∑ r = 1 n ( p p r e 2 r − 1 × ( p r e 3 r + 1 ) + p p r e 3 r − 1 × ( p r e 2 r + 1 ) ) \sum\limits_{r=1}^{n}\sum\limits_{l=1}^{r} -(pre2_{l-1}\times (pre3_r+1)+pre3_{l-1}\times (pre2_r+1)) \\ =-\sum\limits_{r=1}^{n}\sum\limits_{l=1}^{r} \ (pre2_{l-1}\times (pre3_r+1)+pre3_{l-1}\times (pre2_r+1)) \\ =-\sum\limits_{r=1}^{n} (ppre2_{r-1}\times (pre3_r+1)+ppre3_{r-1}\times (pre2_r+1)) r=1∑nl=1∑r−(pre2l−1×(pre3r+1)+pre3l−1×(pre2r+1))=−r=1∑nl=1∑r (pre2l−1×(pre3r+1)+pre3l−1×(pre2r+1))=−r=1∑n(ppre2r−1×(pre3r+1)+ppre3r−1×(pre2r+1))
Can be in O ( n ) O(n) O(n) Complete in time complexity .
Code :
#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int N = 100010;
int a[N], n;
int pre2[N], ppre2[N];
int pre3[N], ppre3[N];
int mul23[N];
void add(int& a, int b) {
a = (a + b) % mod;
if (a < 0) a += mod;
}
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
for (int i = 1; i <= n; ++i) {
pre2[i] = pre2[i - 1];
pre3[i] = pre3[i - 1];
if (a[i] == 2) {
add(pre2[i], 1);
} else if (a[i] == 3) {
add(pre3[i], 1);
}
ppre2[i] = ppre2[i - 1];
ppre3[i] = ppre3[i - 1];
add(ppre2[i], pre2[i]);
add(ppre3[i], pre3[i]);
mul23[i] = mul23[i - 1];
add(mul23[i], 1ll * pre2[i] * pre3[i] % mod);
}
int ans = 0;
for (int i = 1; i <= n; ++i) {
int temp = 0;
add(temp, 1ll * pre2[i] * pre3[i] % mod);
add(temp, pre2[i]);
add(temp, pre3[i]);
add(temp, 1);
add(ans, 1ll * i * temp % mod);
add(ans, -1ll * (1 + pre3[i]) * ppre2[i - 1] % mod);
add(ans, -1ll * (1 + pre2[i]) * ppre3[i - 1] % mod);
add(ans, mul23[i - 1]);
}
printf("%d\n", ans);
return 0;
}
边栏推荐
- Flex布局
- Noip1998-2018 popularization group csp-j2 2019 2020 problem solving report and video
- 视比特“AI+3D视觉”产品系列 | 上料装配工作站
- EasyCVR接入Ehome协议的设备,无法观看设备录像是什么原因?
- VirtualBox中克隆了一个虚拟系统出现IP问题
- The first WordPress plug-in you are taught to make step by step
- NOIP2011-2018提高组解题报告
- NOIP普及组2006-2018初赛 2019 CSP-J1 2020 CSP-J1 完善程序题
- Noip popularization group 2006-2018 preliminary round 2019 csp-j1 2020 csp-j1 improvement program
- NOIP1998-2018年普及组 CSP-J2 2019 2020 解题报告及视频
猜你喜欢

PotPlayer播放百度云盘视频

Noip popularization group 2006-2018 preliminary round 2019 csp-j1 2020 csp-j1 improvement program

It's completely cold! Tencent's well-known software was taken off the shelves, and netizens were all sobbing...

Design details of the full stack CRM development tool webclient UI workbench

ICML 2022 | 基于解耦梯度优化的可迁移模仿学习方法

基数排序——【常见排序法(2/8)】

抓取手机端变体组合思路设想

10.Hystrix断路器

Introduction to LTSpice circuit simulation

Cloud sports, 360 ° witnessing speed and passion
随机推荐
Inspur network wins step by step
Super detailed steps for MySQL master-slave switching
Lucky draw animation - Carp jumps over the dragon's gate
[redis] a brief summary of redis on January 31, 2021 No.01
55. maximum sum of continuous subarrays
老司机总结的12条 SQL 优化方案(非常实用)
MATLB|可视化学习(plot和bar)
On the design principle of price discount in SAP software
R 编程语言 - 简介
[tcapulusdb knowledge base] tcapulusdb technical support introduction
高并发、高可用、弹性扩展,天翼云护航企业云上业务
彻底凉了!腾讯知名软件全线下架,网友一片唏嘘。。。
55. 连续子数组的最大和
【每日3题(1)】字符串中第二大的数字
PostgreSQL exception handling
如何备份 WordPress 数据库
NOIP2011-2018提高组解题报告
np tips: random 创建随机矩阵 sample = np.random.random([19, 64 , 64, 3])
【世界海洋日】TcaplusDB号召你一同保护海洋生物多样性
Coding Devops helps Sinochem information to build a new generation of research efficiency platform and drive the new future of "online Sinochem"