超级绵羊异或

306人阅读 评论(0) 收藏 举报
分类:

题目大意

求 (a) xor (a + b) xor (a + b * 2) xor … xor (a + b * (n - 1))。

题解

考虑计算答案第k位是否为1。
对于一个a+bi,判断它第k位是否为1。
那么就是看a+bi2k是否是奇数。
然后发现我们可以写出这样一个式子,判断它的奇偶性。
n1i=0a+bi2k
这是经典的类欧几里得算法,在模2意义下进行即可。

#include<cstdio>
#include<algorithm>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
typedef long long ll;
const int maxd=62,mo=2;
int i,j,k,l,t,n,m,ca,a,b;
ll ans,x,last;
ll likegcd(ll a,ll b,ll c,ll n){
    if (!a) return 0;
    if (a>=c||b>=c){
        ll t=likegcd(a%c,b%c,c,n);
        ll l=(a/c)*(n*(n+1)/2%mo)%mo+(b/c)*(n+1)%mo;
        (l+=t)%=mo;
        return l;
    }
    ll m=(a*n+b)/c;
    ll t=likegcd(c,c-b-1,a,m-1);
    t=(n*m%mo-t)%mo;
    (t+=mo)%=mo;
    return t;
}
int main(){
    freopen("shxor.in","r",stdin);freopen("shxor.out","w",stdout);
    scanf("%d",&ca);
    while (ca--){
        scanf("%d%d%d",&n,&a,&b);
        if (b==0){
            if (n%2==1) printf("%d\n",a);else printf("0\n");
            continue;
        }
        ans=0;
        x=1;
        fo(k,0,maxd){
            if (likegcd(b,a,x,n-1)) ans^=x;
            x*=2;
        }
        printf("%lld\n",ans);
        /*if (ans==0&&last==174374687) printf("%d %d %d\n",n,a,b);
        last=ans;*/
    }
}
查看评论

JZOJ5243【GDOI2018模拟8.8】超级绵羊异或 类欧几里得算法

好像没什么人去改这题啊。。。 题意:求a xor(a+b)xor(a+b*2)…..xor (a+b*(n-1))考虑计算答案的第x位是否为1 那么对于a+bi,判断(a+bi)/(1...
  • qq_35866453
  • qq_35866453
  • 2017-08-08 17:12:53
  • 131

【JZOJ5149】超级绵羊异或 题解

题目大意      ~~~~~~求 a xor (a+b) xor (a+2b) xor ... xor (a+(n−1)b)a~xor~(a+b)~xor~(a+2b)~xor~...~xor~(a...
  • rzO_KQP_Orz
  • rzO_KQP_Orz
  • 2017-06-16 22:39:50
  • 275

BSOJ3175:弹飞绵羊 LCT

3175 -- 【HNOI2010】弹飞绵羊 Description   Lostmonkey发明了一种超级反弹装置。   为了在绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,L...
  • qq_30303087
  • qq_30303087
  • 2016-02-15 23:41:35
  • 219

BZOJ 2002 Hnoi2010 弹飞绵羊 分块

题意某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki...
  • y20070316
  • y20070316
  • 2016-02-02 16:52:23
  • 167

BZOJ 2002 弹飞绵羊 Link-Cut-Tree(LCT)

题目大意: 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹...
  • PoPoQQQ
  • PoPoQQQ
  • 2014-08-26 16:20:49
  • 2291

[HNOI2010]BOUNCE 弹飞绵羊

[HNOI2010]BOUNCE 弹飞绵羊 题目描述: 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lost...
  • qq_36697334
  • qq_36697334
  • 2017-09-27 11:27:04
  • 95

BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊 LCT

BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊 LCT
  • wzq_QwQ
  • wzq_QwQ
  • 2015-08-10 13:41:57
  • 1631

wifi绵羊墙搭建

Wifi绵羊墙原理:利用karma攻击搭建一个wifi绵羊墙,将自动链接上来的用户的主机名和被动广播出去的ssid的名称展示在屏幕上。 karma攻击的原理:      Karma是一种通过伪造虚...
  • Root__Yang
  • Root__Yang
  • 2016-11-09 22:28:20
  • 1588

虚拟光驱小绵羊

  • 2013年07月03日 09:53
  • 1.47MB
  • 下载

老虎吃绵羊 人机对战 lua console

  • 2014年08月07日 19:33
  • 7KB
  • 下载
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 39万+
    积分: 1万+
    排名: 1455
    最新评论
    文章分类