BZOJ 1411 ZJOI2009 硬币游戏

 递推;

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 #define ll long long
 6 #define FILE "dealing"
 7 #define up(i,j,n) for(int i=j;i<=n;i++)
 8 #define db long double 
 9 #define pii pair<int,int>
10 #define pb push_back
11 #define mem(a,L) memset(a,0,sizeof(int)*(L+1))
12 template<class T> inline bool cmin(T& a,T b){return a>b?a=b,true:false;}
13 template<class T> inline bool cmax(T& a,T b){return a<b?a=b,true:false;}
14 template<class T> inline T squ(T a){return a*a;}
15 const int maxn=210000+10,inf=1e9+10,mod=10003;
16 ll read(){
17     ll x=0,f=1,ch=getchar();
18     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
19     while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
20     return x*f;
21 }
22 ll n;
23 ll T,f;
24 ll a[maxn],b[maxn];
25 int main(){
26     freopen(FILE".in","r",stdin);
27     freopen(FILE".out","w",stdout);
28     n=read(),T=read();
29     up(i,0,n-1)a[i]=(read()+1)%2;
30     for(int i=1;i<=60;i++)
31         if(T&(1LL<<i)){
32             memcpy(b,a,sizeof(ll)*(n+1));
33             for(int j=0;j<n;j++)
34                 a[j]=b[(j-(1LL<<i-1)%n+n)%n]^b[(j+(1LL<<i-1))%n];
35         }
36     if(T&1){
37         memcpy(b,a,sizeof(ll)*(n+1));
38         for(int j=0;j<n;j++)
39             a[j]=b[j%n]^b[(j+1)%n];
40     }
41     if(T&1)up(i,0,n-1)printf("0 %lld%c",(a[i]+1),i==n-1?'\n':' ');
42     else up(i,0,n-1)printf("%lld 0%c",(a[i]+1),i==n-1?'\n':' ');
43     return 0;
44 }
View Code

 

转载于:https://www.cnblogs.com/chadinblog/p/6805134.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值