对于出题人大大的证法表示太高深。
这里用高考范围内的知识给出更为简洁,严谨的证明。
为了方便起见,一下中的按理解。
首先,我们要证的命题是
若对于任意的正整数及任意的自然数,
有,
则对任意的自然数,
.
现对用数学归纳法证明命题。
当时,显然.
假设时命题成立,即对任意的自然数,
有.
则当时,对任意的自然数,
有
故命题对也成立。
综上命题得证。
#include<iostream> #include<cstdio> void read(int &s); #define rep(i,a,b) for(int i=(a);i<=(b);i++) using namespace std; const int maxn=3000030; int gt(int nn){ int s=0; for(int i=2;i<=nn;i*=2)s+=nn/i; return s; } int n,t,k,Ans,a[maxn]; int main(){ read(n);read(t);read(k); rep(i,1,n)read(a[i]); Ans=0; rep(i,0,t){ int C; C=(gt(t)-gt(i)-gt(t-i))?0:1; Ans=(Ans+C*a[(k+i-1)%n+1])%2; } cout<<Ans; return 0; } void read(int &s){ int k=1;s=0;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')k=-1;ch=getchar();} while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();} s*=k; }