P9836 种树
solution
首先要知道对于一个整数
又由于题目要求的是所有数上式的乘积,于是我们可以对值域内每个质数
如果数
设值域为
code
#include<bits/stdc++.h> using namespace std; using E=long long; constexpr E mod=998244353; int main(){ int n,w,W=0; cin>>n>>w; W=max(W,w); vector<int> p(n+1); for(int i=1; i<=n; i++) cin>>p[i],W=max(W,p[i]); E ans=1; vector<bool> st(W+1); for(int i=2; i<=W; i++){ if(st[i]) continue; for(int j=i*2; j<=W; j+=i) st[j]=1; priority_queue<int,vector<int>,greater<int>> pq; for(int j=1; j<=n; j++){ int s=0; while(p[j]%i==0) s++,p[j]/=i; pq.push(s); } int cnt=0; while(w%i==0) cnt++,w/=i; while(cnt){ assert(pq.size()); int u=pq.top(); pq.pop(); pq.push(u+1); cnt--; } while(pq.size()){ ans=ans*(pq.top()+1)%mod; pq.pop(); } } cout<<ans<<endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】