1 条题解

  • 0
    @ 2023-6-11 12:17:59

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    //求两点的距离的平方
    double distance(int x1,int y1,int x2,int y2){
    	return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2); 
    }
    
    //判断4个点能否构成正方形(两个点是对角线的话如:abcd四点,
    //两点之间的距离的平方如:ac == ab的平方和)
    //注意:不能有两个点是同一个点(距离为0)
    bool square(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4){
    	bool r = false;
    	
    	//如果有两个点一样是不可以的(主要是x4,y4不能和前3个点有重复的)
    	if(distance(x1,y1,x4,y4) == 0 || distance(x2,y2,x4,y4) == 0 || distance(x3,y3,x4,y4) == 0 ){
    		r = false; 
    	} else{
    		//假设1 2是对角线(且2到3和到4距离要相等)
    		if(distance(x1,y1,x2,y2) == distance(x1,y1,x4,y4) + distance(x2,y2,x4,y4) 
    		&& distance(x2,y2,x3,y3) == distance(x2,y2,x4,y4)
    			&& distance(x1,y1,x3,y3) == distance(x1,y1,x4,y4)) {
    			r = true; 
    			//1 3是对角线
    		} else if(distance(x1,y1,x3,y3) == distance(x3,y3,x4,y4) + distance(x1,y1,x4,y4)
    		&& distance(x3,y3,x2,y2) == distance(x3,y3,x4,y4)
    			&& distance(x1,y1,x2,y2) == distance(x1,y1,x4,y4)) {
    			r = true; 
    			//1 4是对角线
    		} else if(distance(x1,y1,x4,y4) == distance(x1,y1,x2,y2) + distance(x2,y2,x4,y4)
    		&& distance(x1,y1,x4,y4) == distance(x1,y1,x3,y3) + distance(x3,y3,x4,y4)
    		&& distance(x4,y4,x2,y2) == distance(x4,y4,x3,y3)) {
    			r = true; 
    		}
    	}
    
    	return r;
    }
    
    int main(){
    	int x1,y1,x2,y2,x3,y3;
    	int i,j;
    	cin>>x1>>y1>>x2>>y2>>x3>>y3;
        bool f = false; 
    	for(i = 1;i <= 19;i++){
    		for(j = 1;j <= 19;j++){
    			//注意:i j不能是已有的点
    			if(square(x1,y1,x2,y2,x3,y3,i,j) == true){
    				cout<<i<<" "<<j<<endl;
    				f = true;
    				break;
    			}
    		}
    		
    		if(f == true){
    			break;
    		}
    		
    	}
    	
    	return 0;
    }
    
    
    
    • 1

    信息

    ID
    2451
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者