没人发题解吗?
想了一个小时,没想出来优化
求改错
#include<iostream> const int o=998244353; int n,k,s,a[10000010],t=0; int gcd(int a,int b) { while (a^=b^=a^=b%=a); return b; } int main() { std::cin>>n>>k>>s; for (int i=1;i<=n;++i) std::cin>>a[i]; for (int i=1;i<=n-k+1;++i) { if (k==1) { if (a[i] == s) t=(t+a[i])%o; } else for (int j=i+1;j<=n-k+2;++j) { if (k==2) { int y=a[i];y^=a[j]; if (y == s) t=(t+gcd(a[i],a[j]))%o; } else for (int u=j+1;u<=n-k+3;++u) { if (k==3) { int y=a[i];y^=a[j];y^=a[u]; if (y == s) t=(t+gcd(gcd(a[i],a[j]),a[u]))%o; } else for (int v=u+1;v<=n-k+4;++v) { int y=a[i];y^=a[j];y^=a[u];y^=a[v]; if (y == s) t=(t+gcd(gcd(a[i],a[j]),(a[u],a[v])))%o; } } } } std::cout<<t<<std::endl; return 0; }
请问谁有简便方法
全部评论
(2) 回帖