社区讨论
俩样例都没过,A了
P3750[六省联考 2017] 分手是祝愿参与者 5已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo915tkz
- 此快照首次捕获于
- 2023/10/28 03:52 2 年前
- 此快照最后确认于
- 2023/10/28 03:52 2 年前
六省联考造的什么JB数据,这程序俩样例都没过都A了。
CPP#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;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...