P7042 「MCOI-03」正方

题目

分析

  • 三角形面积 S = l ∗ h / 2 S=l*h/2 S=lh/2
  • 在正方形上进行分解,那么只用考虑高的分配
  • 为了方便判断我们把4的比值排序(升降序无所谓),并且按分数处理方式一样,拿gcd同分(要开long long!!!)
  • 立马就能特判出一种情况:如果 a [ 1 ] + a [ 4 ] ! = a [ 2 ] + a [ 3 ] a[1]+a[4]!=a[2]+a[3] a[1]+a[4]!=a[2]+a[3] 那么显然是不存在的(可以画图)
  • 样例给的很明白,直接把剩下两种情况也提示
  1. a [ 1 ] = = a [ 2 ] a[1]==a[2] a[1]==a[2] && a [ 3 ] = = a [ 4 ] a[3]==a[4] a[3]==a[4] 那么显然只有4个就是当上下左右对换这样
  2. 那么反之,就有8个了。为什么?因为我们把组合成行的与组合成列交换又能生成4个

代码

#include<bits/stdc++.h>
using namespace std;
long long a[2030];
inline long long read()
{
	long long num=0,f=1; char ch=getchar();
	while(ch<'0'||ch>'9') {if(ch=='-') f=-1; ch=getchar();}
	while(ch>='0'&&ch<='9') {num=(num<<1)+(num<<3)+ch-'0'; ch=getchar();}
	return num*f;
}
inline long long gcd(long long x,long long y) {return !y?x:gcd(y,x%y);}
int main()
{
	int T=read();
	while(T--)
	{
		a[1]=read(),a[2]=read(),a[3]=read(),a[4]=read();
		sort(a+1,a+1+4);
		int d=gcd(a[1],a[2]); d=gcd(d,a[3]);d=gcd(d,a[4]);
		a[1]/=d,a[2]/=d,a[3]/=d,a[4]/=d; 
		if(a[1]==a[2]&&a[2]==a[3]&&a[4]==a[3]) 
		{
			puts("1");
			continue;
		}
		if(a[1]+a[4]!=a[2]+a[3])
		{
			puts("0");
			continue;
		}		
		else
		{
			if(a[1]==a[2]) puts("4");
			else puts("8");
		}
	}
	return 0;	
}

其实就是想水一篇题解,哈哈哈哈嗝~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值