过不了第一个(哭)
查看原帖
过不了第一个(哭)
1119261
lele1357楼主2024/7/30 16:53
#include<bits/stdc++.h>
#include<math.h>
using namespace std;
int main(){
	int w,m,n,ans;
	cin>>w>>m>>n;
    
# 	//如果m在偶数行,转化
	if(m%w==0&&m/w%2==0){
		m=m-w+1;	
	}else if(m%w!=0&&(m/w+1)%2==0){	
		m=((m/w)+1)*w-m%w+1;	
	}
    
###### 	//如果n在偶数行,转化
	if(n%w==0&&n/w%2==0){
		n=n-w+1;	
	}else if(n%w!=0&&(n/w+1)%2==0){	
		n=((n/w)+1)*w-n%w+1;	
	}	
	
	//cout<<"m:"<<m<<endl<<"n:"<<n<<endl;
    
#####    //分别求横纵方向的差,再相加 
######    //水平:abs((m-1)/w+1-(n-1)/w+1)=abs(m-n)/w
######    //竖直:abs((m-1)%w+1-(n-1)%w+1)=abs(m-n)%w
	ans=abs((m-n)/w)+abs((m-n)%w);
	cout<<ans;
   return 0;
}
2024/7/30 16:53
加载中...