俩样例都没过,A了
查看原帖
俩样例都没过,A了
194761
Isenthalpic楼主2022/4/12 21:47

六省联考造的什么JB数据,这程序俩样例都没过都A了。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5,mod=100003;
int n,k,a[N],f[N],cnt,sum;
vector<int>fac[N];
int fpow(int a,int b){
	int ret=1;
	for(;b;b>>=1){
		if(b&1)ret=1LL*ret*a%mod;
		a=1LL*a*a%mod;
	}return ret;
}
signed main(){
	//freopen("trennen14.in","r",stdin);
	scanf("%lld%lld",&n,&k);
	for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
	for(int i=1;i<=n;i++)
		for(int j=i;j<=n;j+=i)fac[j].push_back(i);
	for(int i=n;i>=1;i--)
		if(a[i]){cnt++;for(auto v:fac[i])a[v]^=1;}
	int fn=1;
	for(int i=1;i<=n;i++)fn=1LL*fn*i%mod;
	if(cnt<=k)return printf("%lld\n",1LL*cnt*fn%mod),0;
	f[n]=1;
	for(int i=n-1;i>=1;i--){
		f[i]=(1+1ll*(n-i)*fpow(i,mod-2)%mod*(f[i+1]+1)%mod)%mod;
		if(i<=cnt&&i>=k+1)(sum+=f[i])%=mod;
	}
	printf("%lld\n",1LL*(sum+k)*fn%mod);
	return 0;
}
2022/4/12 21:47
加载中...