求问编译错误
  • 板块灌水区
  • 楼主MorLeaves
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/11/14 18:46
  • 上次更新2023/11/14 20:20:12
查看原帖
求问编译错误
877691
MorLeaves楼主2023/11/14 18:46
#include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
#define mod 998244353
#define inf 2147483647
typedef long long ll;
map<pair<ll,ll>,ll> mp;
map<ll,ll> wmp;
ll n,w,p[114514],pr[114514];
void work(ll j)
{
	ll ans=1,x=p[j];
	for(ll i=2;i<=x;i++)
	{
		ll cnt=0;
		while(x%i==0)
		{
			x/=i;
			cnt++;
		}
		mp[make_pair(j,i)]=cnt;
		ans*=(cnt+1);
	}
}
int main()
{
	scanf("%lld %lld",&n,&w);
	for(ll i=1;i<=n;i++)
	{
		scanf("%lld",&p[i]);
		work(i);
	}
	ll y=w,prcnt=0;
	for(ll i=2;i<=y;i++)
	{
		ll cnt=0;
		while(y%i==0)
		{
			y/=i;
			cnt++;
		}
		if (cnt>0)
		{
			prcnt++;
			pr[prcnt]=i;
		}
		wmp[i]=cnt;
	}
	for(ll i=1;i<=prcnt;i++)
	{
		bool bo=false;
		ll k,minn=inf;
		for(ll j=1;j<=n;j++)
		{
			if (mp[make_pair(j,pr[i])]<minn)
			{
				minn=mp[make_pair(j,pr[i])];
				k=j;
			}
			if (p[j]%pr[i]!=0)
			{
				bo=true;
				k=j;
				break;
			}
		}
		if (bo==true)
		{
			p[k]*=(ll)(pow(pr[i],wmp[pr[i]]));
			mp[make_pair(k,pr[i])]=wmp[pr[i]];
		}
		else
		{
			p[k]*=(ll)(pow(pr[i],wmp[pr[i]]));
			mp[make_pair(k,pr[i])]+=wmp[pr[i]];
		}
	}
	ll anss=1;
	for(ll i=1;i<=n;i++)
	{
		ll x=p[i];
		for(ll j=2;j<=x;j++)
		{
			ll cnt=0;
			while(x%j==0)
			{
				x/=j;
				cnt++;
			}
			ans*=(cnt+1);
		}
	}
	printf("%lld",ans);
	return 0;
}
2023/11/14 18:46
加载中...