53分 求错误思想指正
  • 板块P9836 种树
  • 楼主xiliang
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/11/12 10:25
  • 上次更新2023/11/18 16:59:52
查看原帖
53分 求错误思想指正
788348
xiliang楼主2023/11/12 10:25
#include <bits/stdc++.h>

using namespace std;
const int N = 201000;
const int mod = 998244353;

int p[N];
int cnt[N];
long long ans=1;

int main()
{
	int n,w;
	scanf("%d%d" , &n , &w);
	
	for(int i=1 ; i<=n ; i++) scanf("%d" , &p[i]);
	
	int res = 0;
	for(int i=1 ; i<=sqrt(w) ; i++)
	{
		if(w%i==0)
		{
			if(w==1) 
			{
				res+=1;
				break;
			}
			else if(i==sqrt(w)) res+=1;
			else res+=2;	
		} 
	}
	cnt[0] = res;
	
	for(int i=1 ; i<=n ; i++)
	{
		res = 0;
		for(int j=1 ; j<=sqrt(p[i]) ; j++)
		{
			if(p[i]%j==0)
			{
				if(p[i]==1) 
				{
					res+=1;
					break;
				}
				else if(j==sqrt(p[i])) res+=1;
				else res+=2;	
			} 
		}	
		cnt[i] = res;
	}
	for(int i=0 ; i<=n ; i++)
	{
		ans = cnt[i]*ans%mod;
	}	
	printf("%lld" , ans);
	return 0;
}
2023/11/12 10:25
加载中...