当前位置: 首页 > news >正文

P9836 种树

容易想到分解因数。

对于一个数 p p p 的因数个数,假设它可以被分解质因数成 a 1 i 1 a 2 i 2 a 3 i 3 ⋯ a k c k a_1^{i_1} a_2^{i_2} a_3^{i_3}\cdots a_k^{c_k} a1i1a2i2a3i3akck 的形式,则其因数个数为 ( i 1 + 1 ) ( i 2 + 1 ) ( i 3 + 1 ) ⋯ ( i k + 1 ) (i_1+1)(i_2+1)(i_3+1)\cdots(i_k+1) (i1+1)(i2+1)(i3+1)(ik+1)

我们对序列 p p p w w w 质因数分解之后再考虑这个问题。对于每次从 w w w 拆分出的一个质因子 A A A,我们假设一棵树 p i p_i pi,原来它的贡献为 x x x,对于该棵树高的质因数拆分中质因子 A A A 的出现次数为 t t t,则乘上该质因子之后它的贡献会变为 x ⋅ t + 2 t + 1 x\cdot \dfrac{t+2}{t+1} xt+1t+2,容易证明分子越小即 t t t 越小对答案的贡献越大。

由于数据范围是 1 0 4 10^4 104,质因数的上界是很有限的。设 a ( i , j ) a(i,j) a(i,j) 表示 i j i^j ij 在所有树高的质因数拆分中出现了多少次,每一次取到的一个 w w w 的质因子 A A A,把它计算到当前存在且 k k k 最小的 A k A^k Ak 上即可。

注意筛 n n n 的质因数要筛到 n n n

#include <bits/stdc++.h>
using namespace std;
#define int long longconst int maxn=1e4+5;
int a[maxn][30],ans=1,p[maxn],mod=998244353,n,w;void calc(int x)
{for(int i=2;i<=max(x,w);i++){int cnt=0;while(x%i==0) x/=i,cnt++;a[i][cnt]++;ans=ans*(cnt+1)%mod;// cout<<cnt<<endl;}
}signed main()
{cin>>n>>w;for(int i=1;i<=n;i++) cin>>p[i],calc(p[i]);// for(int i=1;i<=n;i++) cout<<a[i][1]<<endl;for(int A=2;A<=w;A++)while(w%A==0){int k=0;while(!a[A][k]) k++;	ans/=(k+1),ans%=mod,ans*=(k+2),ans%=mod;w/=A,a[A][k]--,a[A][k+1]++;// cout<<w<<endl;}	cout<<ans;return 0;
}
http://www.lryc.cn/news/226486.html

相关文章:

  • C# 查询腾讯云直播流是否存在的API实现
  • JAVA开源项目 于道前端项目 启动步骤参考
  • 深入理解ElasticSearch分片
  • 【Python】AppUI自动化—appium自动化元素定位、元素事件操作(17)下
  • SpringBoot使用MyBatis多数据源
  • 小程序版本审核未通过,需在开发者后台「版本管理—提交审核——小程序订单中心path」设置订单中心页path,请设置后再提交代码审核
  • Netty入门指南之NIO Selector监管
  • Spring Cloud学习(六)【统一网关 Gateway】
  • 基于单片机的空调智能控制器的设计
  • Spring Boot自动配置原理、实战、手撕自动装配源码
  • 111111111111111
  • React动态生成二维码和毫米(mm)单位转像素(px)单位
  • SpringMvc 常见面试题
  • jmeter接口自动化测试工具在企业开展实际的操作
  • 第17章 反射机制
  • 如何在在线Excel文档中对数据进行统计
  • redis配置文件详解
  • 前端设计模式之【工厂模式】
  • Python与ArcGIS系列(一)ArcGIS中使用Python
  • LeetCode(2)移除元素【数组/字符串】【简单】
  • 原型模式(创建型)
  • Linux命令(118)之paste
  • 使用零拷贝技术实现消息转发功能
  • 【编程语言发展史】SQL的发展历史
  • 2023NOIP A层联测28-小猫吃火龙果
  • C# Dictionary与List的用法区别与联系
  • Git应用(1)
  • 【Java】Netty创建网络服务端客户端(TCP/UDP)
  • Android 设计模式--单例模式
  • 语音识别与自然语言处理(NLP):技术前沿与未来趋势