首页 > 其他分享 >[ARC116C] Multiple Sequences题解

[ARC116C] Multiple Sequences题解

时间:2023-10-14 16:22:06浏览次数:34  
标签:Multiple int 题解 inv res ARC116C 质因数 dp Mod

思路

我们可以很好的想到一种 \(O(nm)\) 的 dp:

状态:\(dp_{i,j}\) 为搜到第 \(i\) 个,最后一个数是 \(j\) 的方案数。

转移:\(dp_{i,j} = \displaystyle\sum_{k|j,k\not =j}dp_{i-1,k}\)

当然这是会超时的。

我们换一种思路,我们先枚举最后一个数,再计算方案数。

这有个好处,我们缩小了前面的数的范围,必定是最后一个数的因数。

我们先分解最后一个数的质因数,统计每个质因数的指数,质因数不超过 \(6\) 个。

然后我们将质因数分配给前面的数,这里的分配是指:假设我分配了 \(2\) 给一个数,则这个数是前面的一个数乘 \(2\)。

这样避免了前面的数不满足条件。

将质因数分配给前面的数,相当于 \(n\) 个小球,放进 \(m\) 个盒子里,可以留空。

也就是 \(\tbinom{m-1}{n+m-1}\) 。

最后将答案统计起来就好了

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+100,Mod=998244353;
int n,m,ans;
int fac[N+10],inv[N+10];
int qpow(int a,int b)
{
	int res=1;
	for(;b;a=a*a%Mod,b>>=1)
		if(b&1)res=res*a%Mod;
	return res;
}
int C(int n,int m){return n==m||m==0?1:fac[n]*inv[n-m]%Mod*inv[m]%Mod;}
signed main()
{
	scanf("%lld%lld",&n,&m);
	fac[1]=1ll;
	for(int i=2;i<=N;i++)fac[i]=fac[i-1]*i%Mod;
	inv[N]=qpow(fac[N],Mod-2);
	for(int i=N-1;i>=1;i--)inv[i]=inv[i+1]*(i+1)%Mod;
	for(int i=1;i<=m;i++)
	{
		int temp=i,tmp=1;
		for(int j=2,cnt=0;j*j<=temp;j++)
		{
			cnt=0;
			while(temp%j==0)cnt++,temp/=j;
			tmp=tmp*C(cnt+n-1,n-1)%Mod;
		}
		if(temp!=1)tmp=tmp*n%Mod;
		ans+=tmp,ans%=Mod;
	}
	cout<<ans;
}

标签:Multiple,int,题解,inv,res,ARC116C,质因数,dp,Mod
From: https://www.cnblogs.com/gdfzlcx/p/17764317.html

相关文章

  • 苏格拉底问答、实践过程截图、遇到问题解决问题截图,代码链接
    defineVOLUME_NAME"EXT2FS"//卷名#defineBLOCK_SIZE512//块大小#defineDISK_SIZE4612//磁盘总块数defineDISK_START0//磁盘开始地址#defineSB_SIZE32//超级块大小是32BdefineGD_SIZE32//块组描述符大小是32B#defineGDT_START(0+512)//块组描述......
  • Android项目在 app 中通过 WebView 访问 url显示空白,使用浏览器可以打开,Android WebVi
    这是服务器证书校验WebView的安全问题服务器证书校验主要针对WebView的安全问题。在app中需要通过WebView访问url,因为服务器采用的自签名证书,而不是ca认证,使用WebView加载url的时候会显示为空白,出现无法加载网页的情况。使用ca认证的证书,在WebView则可以直接......
  • 网络规划设计师真题解析--PERT “计划评审技术”(三点估算法)
    某网络建设项目的安装阶段分为A、B、C、D四个活动任务,各任务顺次进行,无时间上重叠,各任务完成时间估计如下图所示,按照计划评审技术,安装阶段工期估算为(70)天。(2019年)(70)A.31   B.51    C.53    D.83答案:C解析:依据三点估算公示,活动历时均值=(最悲观时间+最可能时间*4+......
  • 算法题解——多数元素
    题目给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数大于⌊n/2⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:nums=[3,2,3]输出:3示例2:输入:nums=[2,2,1,1,1,2,2]输出:2提示:n==nums.length......
  • [AGC009B] Tournament 题解
    思路考虑树形\(\text{dp}\)。我们将每个人与把自己淘汰的人连边。得到一颗以一为根的树。由于我们需要求出必须赢的场数最多的那位选手,至少要赢多少场。考虑最多的限制。可以使用树型动态规划。每一次两个人比赛的代价为:\[dp_i=\max(dp_i,dp_j)+1\]这样就达成了最多的限......
  • 题解:CF118E
    Tarjan思路先来看一下题目给出的无解的这个样例。不难发现,导致无解的两条边就是\(6-7\)和\(2-4\)这两个桥。所以这个题就转换成了求桥,如果存在桥就是无解。代码#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+5,M=3e5+5;inlineintread();intn,......
  • [AGC037D] Sorting a Grid 题解
    学长给我看了这道题,感觉很有趣啊!想了想想出来了。考虑先把每个数还原到对应行上,然后用最后一次把它们斗出来。那么我们就是要在第一次操作后,对于每种颜色使得它平铺在这个块上。那么我们直接网络流或二分图匹配构造一下方案就做完力!......
  • Codeforces 512D. Fox And Travelling 题解
    FoxAndTravelling题面翻译给定一张\(n\)个点\(m\)条边的无向图。一个点只有当与它直接相连的点中最多只有一个点未被选择过时才可被选择。询问对于每个\(k\in[0,n]\),有序选择\(k\)个点的方案数。\(n\le100\),\(m\le\frac{n(n-1)}2\),答案对\(10^9+9\)取模。......
  • 洛谷P9290 [ROI 2018] Decryption 题解
    include<bits/stdc++.h>pragmaGCCoptimize(1)pragmaGCCoptimize(2)pragmaGCCoptimize(3,"Ofast","inline")defineregregisterdefineintlonglongusingnamespacestd;inlineintread(){shortf=1;intx=0;charc=getchar();......
  • Sqoop不能正常导出文件到Mysql数据库的问题解决
    之前在使用sqoop输入以下命令时bin/sqoopexport\--connectjdbc:mysql://node1:3306/journal\--usernameroot\--password123456\--tabletop_courses_by_traffic\--export-dir/user/hive/warehouse/journal.db/top_courses_by_traffic--input-fields-terminated-......