80分,裂开
查看原帖
80分,裂开
190322
Varuxn楼主2021/3/20 16:11

我眼动对拍都没用QAQ,求助

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=1e6,mod=1e5+3;
ll n,m,tot,ans,temp,f[N+5],vis[N+5];
ll mul(ll x, ll y)
{
    ll L=x*(y>>25)%mod*(1<<25)%mod;
    ll R=x*(y&((1<<25)-1))%mod;
    return (L+R)%mod;
}
ll ksm(ll a,ll b)
{
    ll ans=1;
    while(b)
    {
        if(b&1) ans=a*ans%mod;
        a=a*a%mod;
        b>>=1;
    }
    return ans;
}
int main()
{
	scanf("%lld%lld",&n,&m);
	for(ll i=1;i<=n;i++)
		scanf("%lld",&vis[i]);
	for(ll i=n;i>=1;i--)
		if(vis[i])
		{
			tot++;
			for(ll j=1;j*j<=i;j++)
				if(i%j==0)
				{
					vis[j]^=1;
					if(j*j!=i) vis[i/j]^=1;
				}
		}
	f[n]=1;
	for(ll i=n-1;i>m;i--)
	{
		temp=mul(n-i,f[i+1]);
		temp=(temp+n)%mod;
		temp=temp*ksm(i,mod-2)%mod;
        f[i]=temp;
	}
	if(ans<m)
		ans=tot%mod;
    else
    {
        for(ll i=tot;i>m;i--)
        	ans=(ans+f[i])%mod;
        ans=(ans+m)%mod;
    }
	for(ll i=1;i<=n;i++)
		ans=mul(i,ans);
    printf("%lld",ans);
	return 0;
}
2021/3/20 16:11
加载中...