mxqz,关于代码不能在本机运行的问题
查看原帖
mxqz,关于代码不能在本机运行的问题
65681
UltiMadow楼主2022/4/13 16:20

我的代码:

#include<bits/stdc++.h>
#define int long long
#define MAXN 100010
using namespace std;
int n,K;
struct Node{
	int x[MAXN];
	Node(int xx=0){memset(x,0,sizeof(x));}
	int& operator[](const int p){return x[p];}
}e,p,q,C,ans;
Node operator*(Node a,Node b){
	Node ret;
	for(int i=1;i<=n;i++)ret[i]=a[b[i]];
	return ret;
}
Node operator^(Node a,int b){
	Node ret=e;
	for(;b;b>>=1,a=a*a)if(b&1)ret=ret*a;
	return ret;
}
Node inv(Node a){
	Node ret;
	for(int i=1;i<=n;i++)ret[a[i]]=i;
	return ret;
}
signed main(){
	scanf("%lld%lld",&n,&K);
	for(int i=1;i<=n;i++){
		int x;scanf("%lld",&x);
		p[i]=x;
	}
	for(int i=1;i<=n;i++){
		int x;scanf("%lld",&x);
		q[i]=x;
	}K--;
	for(int i=1;i<=n;i++)e[i]=i;
	C=q*inv(p)*inv(q)*p;
	if(K%6==0)ans=p;
	if(K%6==1)ans=q;
	if(K%6==2)ans=q*inv(p);
	if(K%6==3)ans=q*inv(p)*inv(q);
	if(K%6==4)ans=q*inv(p)*inv(q)*p*inv(q);
	if(K%6==5)ans=q*inv(p)*inv(q)*p*p*inv(q);
	ans=(C^(K/6))*ans*(inv(C)^(K/6));
	for(int i=1;i<=n;i++)printf("%lld ",ans[i]);
	return 0;
}

然后这个代码在本机输入都没法输入,交到 OJ 上 AC 了,CF 上也没查出来 ub(

好像我之前也遇到过类似的情况,求助(

2022/4/13 16:20
加载中...