P9836 种树

2023-11-12 00:28
文章标签 种树 p9836

本文主要是介绍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;
}

这篇关于P9836 种树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/393845

相关文章

前人挖坑,后人种树

天真的人们能够爱——这就是他们的秘密. ——赫尔曼•黑塞 天真的人们能够爱——这就是他们的秘密. ——赫尔曼•黑塞 天真的人们能够爱——这就是他们的秘密. ——赫尔曼•黑塞 天真的人们能够爱——这就是他们的秘密. ——赫尔曼•黑塞 天真的人们能够爱——这就是他们的秘密. ——赫尔曼•黑塞 天真的人们能够爱——这就是他们的秘密. ——赫尔曼

【nowcoder 8564D】种树:思维 + dfs

传送门 分析 一个有趣的性质题 首先非叶子节点的值没有意义,他的节点的值由子节点继承来 然后假设可操作次数为 c n t cnt cnt,那么,深度小于 c n t cnt cnt的叶子节点的值是都可以取到的,如果最大的叶子结点的值的深度小于等于 c n t cnt cnt,那么答案就是 c n t cnt cnt 如果最大的叶子结点的值的深度大于 c n t cnt cnt,因为没有这么多操

【题解】种树的艺术

题目 题目描述 有N棵高度不一样的树要种成一行,为了让种树更加有艺术性,制定一个种树规则,希望从左边看过去只能看到L棵树,从右边看过去只能看到R棵树,请问有多少种不同的种树方案。 输入格式 输入包含多组数据。 首先第一行包含一个整数t,表示数据的组数。 之后t行,每行包含三个数N,L,R,以空格隔开,表示树的棵数N以及从左边看过去的棵数L和从右边看过去的棵数R。 输出格式 共t行,

种树问题

需求一 1.蚂蚁森林植物申领统计 问题:假设2017年1月1日开始记录低碳数据(user_low_carbon), 假设2017年10月1日之前满足申领条件的用户都申领了一颗p004-胡杨, 剩余的能量全部用来领取“p002-沙柳”。 统计在10月1日累计申领“p002-沙柳”排名前10的用户信息;以及他比后一名多领了几颗沙柳。   ①统计用户在 2017-1-1 至 2017-10-1期间一

Dynamo读取cad图快坐标,匹配地形种树

今天分享一个已经完成很久的小程序,但是却又比较尴尬的程序。目前可以实现的是读取cad的图块坐标和名称,匹配地形的高度和项目的族,自动放置族,如种树、放置路灯、雨污水井等。但是。。。我们先看下基本操作视频,后面说下目前存在的问题。 Dynamo匹配地形种树 先来说说基本思路吧!首先是通过koz的LinkDWG节点包,读取CAD中图块的坐标和名称,这个方式就比较多了,有兴趣可以去知乎看ko

【华为OD机试考生抽中题 B卷】最佳植树距离、种树,用 C 编码,速通

最近更新的博客 【喜报】华为OD统一考试(B卷)题库清单(已收录130题),更快,更全的 B 卷题库大纲 其他OD统一考试试卷整理 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单华为OD机试(含B卷)真题2023 精简版,50道100分题目。如果距离机考时间不多了,就看这个吧华为OD机试(A、B卷)、机考,200分的题目整理如下,冲满分必备 华为

【华为OD统一考试(B卷)】最佳植树距离、种树,JAVA 题解 | 华为OD机试考题

最近更新的博客 【喜报】华为OD统一考试(B卷)题库清单(已收录130题),更快,更全的 B 卷题库大纲 其他OD统一考试试卷整理 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单华为OD机试(含B卷)真题2023 精简版,50道100分题目。如果距离机考时间不多了,就看这个吧华为OD机试(A、B卷)、机考,200分的题目整理如下,冲满分必备 华为

【2023OD统一考试(B卷)抽中题】最佳植树距离、种树,用 JS 编码,速通

最近更新的博客 【喜报】华为OD统一考试(B卷)题库清单(已收录130题),更快,更全的 B 卷题库大纲 其他OD统一考试试卷整理 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单华为OD机试(含B卷)真题2023 精简版,50道100分题目。如果距离机考时间不多了,就看这个吧华为OD机试(A、B卷)、机考,200分的题目整理如下,冲满分必备 华为

【OD统一考试(B卷)考生抽中题】最佳植树距离、种树,用 C++ 编码,速通

最近更新的博客 【喜报】华为OD统一考试(B卷)题库清单(已收录130题),更快,更全的 B 卷题库大纲 其他OD统一考试试卷整理 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单华为OD机试(含B卷)真题2023 精简版,50道100分题目。如果距离机考时间不多了,就看这个吧华为OD机试(A、B卷)、机考,200分的题目整理如下,冲满分必备 华为

第四单元 贪心算法 4.1 装载问题 4.2 区间问题 4.3 删数问题 4.4 工序问题 4.5 种树问题 4.6 马的哈密尔顿链4.7 三值的排序 4.8 田忌赛马 4.9 小结

第四单元 贪心算法 以下 9 个问题都给出了相应贪心策略,但是为什么这些策略是正确的呢?请自己证明(提示:反证法)。 4.1 装载问题 (1) 简单的装载问题 【问题描述】有 n 件物品和一个容量为 C 的背包。第 i 件物品的重量是 w[i]。求解将哪些物品装入背包可物品 数量最多。 【贪心策略】将物品重量从小到大进行排序,优先挑重量轻的装入背包。 (2) 部分背包问题 【问题描述】