对于出题人大大的证法表示太高深。

这里用高考范围内的知识给出更为简洁,严谨的证明。

为了方便起见,一下中的理解。

首先,我们要证的命题是

若对于任意的正整数及任意的自然数

则对任意的自然数

.

现对用数学归纳法证明命题。

时,显然.

假设时命题成立,即对任意的自然数,

.

则当时,对任意的自然数,


故命题对也成立。

综上命题得证。

#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;
}