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

2024jxcpc D.Magic LCM (logn筛质因子)

题目链接

#include<bits/stdc++.h>
using namespace std;
#define int long long 
using ll=long long;
typedef pair<int,int>PII;
typedef priority_queue<int> upq;
typedef priority_queue<int,vector<int>,greater<int>> dpq;
const int M=998244353;
const int N=1e6+20;  // 只要处理(1e6)的质因子 // 样例:
/*51 4 5 2 1034       */
bool prime[N];
int mi[N];			//筛出i的最小质因子 
void getprime(){for(int i=2;i<N;i++){if(prime[i]) continue;for(int j=i*2;j<N;j+=i){prime[j]=1;if(mi[j]==0)mi[j]=i;}mi[i]=i;}mi[1]=1;
}int cnt[N][21]; 
int mx[N+1]; // 质数i最大出现次数
void solved()
{int n; cin>>n;vector<int>v(n);for(int i=0;i<n;i++) cin>>v[i];ll ans=0;vector<int>stk;for(int i=0;i<n;i++){while(v[i]>1){int p=mi[v[i]];int tt=0;while(mi[v[i]]==p){v[i]/=p;tt++;}if(mx[p]==0) stk.push_back(p); mx[p]=max(mx[p],tt);cnt[p][tt]++;           //为p的质数tt次幂出现的次数}}vector<ll>a(n,1);for(auto p:stk){int j=0; // 含有质数p的个数for(int i=mx[p];i>0;i--) j+=cnt[p][i];ll pw=1;for(int i=1;i<=mx[p];i++){pw*=p;pw%=M;while(cnt[p][i]){cnt[p][i]--;a[--j]*=pw;  		//大的放a[0]; a[j]%=M;}}mx[p]=0;}for(auto i:a) ans=(ans+i)%M;cout<<ans<<"\n";}
signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);getprime();int t; cin>>t;while(t--) solved();
}

相关文章:

  • 《递归:C语言中的强大工具》
  • 【缓冲区分析】叠加分析-要素叠加
  • 时态--09--动词过去式、过去分词
  • 批量打印工具使用全攻略
  • 无需下载,免费在线AI音乐生成器:爱狐AI详解与使用
  • 基于PLC的图书管理识别系统设计
  • 2-SAT之完美塔防
  • 在 VMware 虚拟机中安装 Windows7
  • SQL实战:04之SQL中的分组问题求解
  • VPN访问SAP组服务器报登陆负载均衡错误88:无法连接到消息服务器(RC=9)
  • 机器学习day4-Knn+交叉验证api练习(预测facebook签到位置)
  • AI工具 Trae 创建java项目和配置运行环境完整示例
  • js day9
  • Lightroom 2025手机版:专业编辑,轻松上手
  • java发送邮件
  • 共探蓝海赛道增长新方法 阿里国际站智能AI全球买家分析峰会在深落幕
  • kubelet 清理资源以缓解磁盘压力
  • 队列优化dp || 线段树优化dp
  • 探索豆包WEB/PC超能创意1.0:创意新利器的全面解析
  • 【力扣/代码随想录】哈希表
  • 不准打小孩:童年逆境经历视角下的生育友好社会
  • 浙江官宣:五一假期,没电、没气、没油车辆全部免费拖离高速
  • 成都警方:在地铁公共区域用改装设备偷拍女乘客,男子被行拘
  • 发布亮眼一季度报后,东阿阿胶股价跌停:现金流隐忧引发争议
  • 长三角铁路“五一”假期运输今启动:预计发送旅客量增6%,5月1日当天有望创新高
  • “杭州六小龙”的招聘迷局