为什么数据保证在long long范围内我却WA到0分了?
查看原帖
为什么数据保证在long long范围内我却WA到0分了?
110835
彭天宇楼主2020/8/6 16:36
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=81;
int n,x,y,k;
void cheng(int a[N],int b[N][N]){
	int d[N];
	memset(d,0,sizeof(d));
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			d[i]+=a[j]*b[j][i];
	memcpy(a,d,sizeof(d));
}
void pingfang(int a[N][N]){
	int b[N][N];
	memset(b,0,sizeof(b));
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			for(int k=1;k<=n;k++)
				b[i][j]+=a[i][k]*a[k][j];
	memcpy(a,b,sizeof(b));
}
signed main(){
	int c[N],f[N][N];
	cin>>n>>x>>y>>k;
	for(int i=1;i<=n;i++){
		if(i==1)f[i][n]=1;
		else f[i][i-1]=1;
	}
	for(int i=1;i<=n;i++)swap(f[x][i],f[y][i]);
	for(int i=1;i<=n;i++)cin>>c[i];
	while(k){
		if(k&1)cheng(c,f);
		pingfang(f);
		k>>=1;
	}
	for(int i=1;i<=n;i++)cout<<c[i]<<" ";
	return 0;
}

2020/8/6 16:36
加载中...