4921: [Lydsy六月月赛]互质序列

Time Limit: 1 Sec  Memory Limit: 256 MB
Submit: 188  Solved: 110
[Submit][Status][Discuss]

Description

你知道什么是“互质序列”吗?那就是所有数的最大公约数恰好为1的序列。
“互质序列”非常容易找到,但是我们可以尝试通过删除这个序列的一个非空连续子序列来扩大它的最大公约数。
现在给定一个长度为n的序列,你需要从中删除一个非空连续子序列,使得剩下至少2个数,令E为剩下数的最大公约数的期望值,S为合法的方案数,请计算E*S的值。因为这个值可能非常大,请对998244353取模输出。

Input

第一行包含一个正整数n(3<=n<=100000),表示序列的长度。
第二行包含n个正整数a_1,a_2,...,a_n(1<=a_i<=10^9),分别表示序列中的每个元素。

Output

输出一行一个整数,即E*S mod 998244353的值。

Sample Input

5
3 4 5 2 9

Sample Output

14
发现本质就是选一个前缀(可以为空)和一个后缀(可以为空),使得前缀的末尾必须在后缀的开头的左边且不能相邻且前缀后缀元素个数>=2的前后缀gcd的和。
可以发现每个后缀的gcd都是a[n]的某个约数,并且gcd最多只有log种,因为每次gcd减小都伴随着至少一个质因子的失去。
所以我们就可以写暴力了,设r[i]为与i的后缀有相同gcd的最右后缀j,每次暴力统计就好了。
反正我是分成只有前缀(这时候不能只选a[1]),只有后缀(不能只选a[n]),还有前缀后缀都有的情况。
/**************************************************************Problem: 4921User: JYYHHLanguage: C++Result: AcceptedTime:308 msMemory:2460 kb
****************************************************************/#include<bits/stdc++.h>
#define ll long long
#define maxn 100005
const int ha=998244353;
using namespace std;
int a[maxn],n,hz[maxn];
int r[maxn],qz=0,ans=0;inline int add(int x,int y){x+=y;while(x>=ha) x-=ha;return x;
}int gcd(int x,int y){return y?gcd(y,x%y):x;
}int main(){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",a+i);hz[n+1]=0;for(int i=n;i>1;i--){hz[i]=gcd(a[i],hz[i+1]);r[i]=(hz[i]==hz[i+1]?r[i+1]:i);//后缀 if(i<n) ans=add(ans,hz[i]);}for(int i=1;i<n;i++){qz=gcd(qz,a[i]);//前缀 if(i>1) ans=add(ans,qz);//前缀+后缀 if(qz==1) ans=add(ans,n-i-1);else{for(int j=i+2;j<=n;j=r[j]+1){ans=add(ans,gcd(hz[j],qz)*(ll)(r[j]-j+1)%ha);}}}printf("%d\n",ans);return 0;
}

  

转载于:https://www.cnblogs.com/JYYHH/p/8525848.html

bzoj 4921: [Lydsy六月月赛]互质序列相关推荐

  1. BZOJ 4921: 互质序列 数学 枚举

    4921: 互质序列 Time Limit: 1 Sec  Memory Limit: 256 MB Submit: 112  Solved: 61 [Submit][Status][Discuss] ...

  2. [BZOJ4920][Lydsy六月月赛]薄饼切割

    [BZOJ4920][Lydsy六月月赛]薄饼切割 试题描述 有一天,tangjz 送给了 quailty 一张薄饼,tangjz 将它放在了水平桌面上,从上面看下去,薄饼形成了一个 \(H \tim ...

  3. BZOJ4921「Lydsy1706月赛」互质序列

    吐槽一下BZOJ没有C++11  题还是不难的 BZOJ 4921 题意 在长度为$ n$的数列中去掉非空的连续一段并保证剩下数字不少于$ 2$ 求合法的所有方案中剩下数字的最大公约数的总和 $Sol ...

  4. [JZOJ5952] 凯旋而归 ([BZOJ 5092]【Lydsy1711月赛】分割序列)【高维前缀和】【DP】

    Description 对于一个长度为m的序列a,记f(a)=max⁡((a1xor...xorai)+(ai+1xor...xoran)),i∈[0,m]f(a)=\max((a_1\ xor\ . ...

  5. BZOJ4921 互质序列

    即求删掉一个子序列的gcd之和.注意到前后缀gcd的变化次数都是log级的,于是暴力枚举前缀gcd和后缀gcd即可. #include<iostream> #include<cstd ...

  6. bzoj4921: 互质序列

    传送门 首先题目答案可以分为三部分:只取左边,只取右边,两边都取. 发现这些问题可以由前缀gcd和后缀gcd得到. 然后可以证明前缀gcd和后缀gcd一定可以分成段数不超过logAi的相同子序列. 因 ...

  7. 三个数互质 java_LeetCode 5198. 丑数 III(Java)容斥原理和二分查找

    请你帮忙设计一个程序,用来找出第 n 个丑数. 丑数是可以被 a 或 b 或 c 整除的 正整数. 示例 1: 输入:n = 3, a = 2, b = 3, c = 5 输出:4 解释:丑数序列为 ...

  8. 两个互质整数的线性组合问题

    两个互质整数的线性组合问题 本文我们讨论两个互质整数的线性组合问题,以及相关的二元一次不定方程. 两个互质整数的线性组合 已知两个整数aaa和bbb互质,即gcd⁡(a,b)=1\gcd(a,b)=1 ...

  9. `Computer-Algorithm` 数论基础知识 (同余,取模,快速幂,质数,互质,约数,质因子)

    catalog 同余 取模 快速幂 质数 互质 约数 质因子 @Delimiter(旧解释) 经验谈 两数之差也整除 加一的特殊性 取模 累加的周期性 取模的唯一集合 取模下的四则运算 除法的不可约性 ...

最新文章

  1. Docker的性能损耗:以基因组分析流程为例
  2. 链路负载均衡的链路和NAT地址保持
  3. python RuntimeError: maximum recursion depth exceeded
  4. python-字符串前面f的作用
  5. 在Filter 无法跳转地址
  6. 领域驱动设计战术模式--值对象
  7. docker操作语句
  8. CXF WebService整合Spring
  9. 不同进制数的表示方法
  10. ffmpeg -视频旋转和高清转码示例
  11. 网易游戏开发工程师笔试题
  12. [20180801]insert导致死锁.txt
  13. 第十二届蓝桥杯时间显示问题 python解法
  14. 计算机屏幕截图按什么键,电脑按什么键自由截图
  15. execution(* com.xxx.*.*(..))
  16. 微信小程序,短信验证码登录,设置密码,密码强度校验
  17. 计算机专业在广东省的录取分数线,深圳大学广东本科批稳居广东高校前4!2019各省录取分数线发布!...
  18. AUTOSAR MCAL详解: SPI (2)
  19. Python类和对象使用
  20. 安安猜价格聪明机器人_App Inventor-零基础Android移动应用开发

热门文章

  1. Redis的两种持久化方式
  2. 3 汪博士解读pmp_备考两月,我顺利通过PMP考试
  3. python 栈和队列_Python实现栈和队列的简单操作方法示例
  4. “敏捷版”全链路压测
  5. 这是阿里技术专家对 SRE 和稳定性保障的理解
  6. 程序员修炼之路:你该知道的 7 个必经阶段
  7. Dubbo 云原生之路:ASF 毕业一周年、3.0 可期
  8. 从零入门 Serverless | 架构的演进
  9. 从零开始入门 | Kubernetes 中的服务发现与负载均衡
  10. linux永久改变字符集,Linux 下mysql永久更改字符集