1 条题解

  • 0
    @ 2024-12-24 9:59:28

    C :

    #include <stdio.h>
    
    int isObtuseTriangle(int, int, int, int, int, int);
    
    int main()
    {
    	int T, N, points[128][2], i, j, k, count;
    	
    	scanf("%d", &T);
    	while (T--){
    		
    		scanf("%d", &N);
    		if (N < 3){
    			printf("%d\n", 0);
    			continue;
    		}
    		for (i = 0; i < N; i++){
    			scanf("%d%d", &points[i][0], &points[i][1]);
    		}
    		
    		count = 0;
    		for(i = 0; i < N; i++){
    			for(j = i + 1; j < N; j++){
    				for(k = j + 1; k < N; k++){
    					count += isObtuseTriangle(points[i][0],points[i][1],
                                                  points[j][0],points[j][1],
    											  points[k][0],points[k][1]);
    				}
    			}
    		}
    		printf("%d\n", count);
    	}
    	
    	return 0;
    }
    
    int isObtuseTriangle(int x1, int y1, int x2, int y2, int x3, int y3)
    {
    	int sideSquare[3], tmp, slope[2];
    	
    	if (x1 == x2 && x1 == x3){
    		return 0;
    	}
    	slope[0] = (y2-y1)*(x3-x2);
    	slope[1] = (y3-y2)*(x2-x1);
    	if (slope[0] == slope[1]){
    		return 0;
    	}
    	
    	sideSquare[0] = (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
    	sideSquare[1] = (x1-x3)*(x1-x3)+(y1-y3)*(y1-y3);
    	sideSquare[2] = (x3-x2)*(x3-x2)+(y3-y2)*(y3-y2);
    	
    	if (sideSquare[1] > sideSquare[0]){
    		tmp = sideSquare[1];
    		sideSquare[1] = sideSquare[0];
    		sideSquare[0] = tmp;
    	}
    	if (sideSquare[2] > sideSquare[0]){
    		tmp = sideSquare[2];
    		sideSquare[2] = sideSquare[0];
    		sideSquare[0] = tmp;
    	}
    	
    	if (sideSquare[0] > (sideSquare[1] + sideSquare[2])){
    		return 1;
    	}
    	
    	return 0;
    }
    
    
    
    • 1

    信息

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