关于set<数据类型>变量名称的使用

该博客介绍了一道关于数字比较的程序题,题目要求在给定的7个数中找出是否存在一个数,通过加减使得其他数相等。文章讨论了当数量超过3个不相等的数时答案为"NO",少于3个则为"YES",并给出了具体的代码实现,主要使用了C++中的set容器进行操作。
摘要由CSDN通过智能技术生成

训练题目B
题目大意:
假设有7个数a,b,c,d,e,f ,g,从中选出一个数比如x,然后用 x 加上或减去7个数,先假设最后可以相等。当所给的数本来就相等,那就不用算了。当所给的数不相等,假设 a+x=b+x=c+x=d=e-x=f-x=g-x,这是其中一种情况,这种情况说明原来的数中其实a=b=c,并且e=f=g,相当于只有a,e,d三个数,然后再列出其它情况。其实这里推想一下也可以想明白了, 所给的数如果超过三个不相等,那结果肯定是 “NO”,少于三个是 “YES”, 三个的时候需要满足 (大+小)=2*中。

  >在这里我们只需要关注一下set的用法就可以;
#include<bits\stdc++.h>
using namespace std;
long long n;
int main(){
	long long i;
    scanf("%lld",&n);
    set<long long>a;//存在A里面 
    int temp;
    for(i=0;i<n;i++){
    	scanf("%lld",&temp);
    	a.insert(temp);
	}
	if(a.size()>3){
		printf("NO");
		return 0;
	}
	else if(a.size()<3){
		printf("YES");
		return 0;
	}
	set<long long>::iterator x=a.begin();
	long long one=*x;
	long long two=*(++x);
	long long there=*(++x);
	if(one+there==2*two)
	       printf("YES");
		   
		   else  printf("NO"); 
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值