題目
題解
–這一看就是數論題。。。個鬼呀
發現最後要使異或值爲0,那lastans必須要等於c
然後又因爲lastans^ c=b <=> lastans=b ^ c
所以我們倒着異或,就可以得到每個x,再快速冪,得到每個b
就可以得到所有答案
這種噁心的題
絕對有毒
代碼
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAXN=1e5+5;
int p;
int n,a[MAXN],c[MAXN];
int x[MAXN],b[MAXN];
int Pow(long long a,int b){
long long ans=1;
while(b){
if(b&1)
ans=(ans*a)%p;
a=(a*a)%p;
b>>=1;
}
return ans%p;
}
int main(){
cin>>p;
n=1;
while(scanf("%d%d",&a[n],&c[n])==2)
n++;
n--;
for(int i=n-1;i>=1;i--){
x[i]=b[i+1]^c[i+1];
b[i]=Pow(1ll*a[i],x[i]);
}
for(int i=1;i<n;i++)
printf("%d\n",x[i]);
return 0;
}