对于出题人大大的证法表示太高深。
这里用高考范围内的知识给出更为简洁,严谨的证明。
为了方便起见,一下中的
按
理解。
首先,我们要证的命题是
若对于任意的正整数及任意的自然数
,
有,
则对任意的自然数,
.
现对用数学归纳法证明命题。
当
时,显然
.
假设
时命题成立,即对任意的自然数
,
有.
则当时,对任意的自然数
,
有
故命题对也成立。
综上命题得证。
#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;
}
京公网安备 11010502036488号