求hack
  • 板块P9836 种树
  • 楼主_mumu
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/30 13:49
  • 上次更新2024/10/30 18:50:25
查看原帖
求hack
535758
_mumu楼主2024/10/30 13:49

rt
代码 only WA on #16


#include <bits/stdc++.h>
using namespace std;
#define ll long long

const int N=1e4+3,M=14,P=998244353;
int n,w,p,num[N],cnt;
ll sum[N][M],add[N],ans=1;
bool vis[N];

int main(){
	//freopen("plant1.in","r",stdin);
	for(int i=2;i<N;i++){
		if(!vis[i]){
			for(int j=i*i;j<N;j+=i) vis[j]=true;
			num[++cnt]=i;
		}
	}
	scanf("%d%d",&n,&w);
	for(int i=1;i<=n;i++){
		scanf("%d",&p);
		for(int j=1;num[j]<=cnt;j++){
			ll u=0;
			while(!(p%num[j])) p/=num[j],u++;
			sum[j][u]++;
		}
		if(p>1) sum[lower_bound(num+1,num+cnt+1,p)-num-1][1]++;
	}
	for(int j=1;num[j]<=cnt;j++){
		ll u=0;
		while(!(w%num[j])) w/=num[j],u++;
		add[j]=u;
	}
	if(w>1) add[lower_bound(num+1,num+cnt+1,w)-num-1]++;	
	for(int i=1;i<=cnt;i++){
		if(add[i]){
			for(int j=0;j<M;j++){
				if(add[i]>sum[i][j]) add[i]-=sum[i][j],sum[i][j+1]+=sum[i][j],sum[i][j]=0;
				else{
					sum[i][j+1]+=add[i],sum[i][j]-=add[i];
					break;
				}
			}
		}
		for(int j=0;j<M;j++){
			for(int k=0;k<sum[i][j];k++){
				ans=(ans*(ll)(j+1))%P;
			}
		}
	}
	printf("%lld",ans);
}
2024/10/30 13:49
加载中...