蓝桥杯编号4352—被污染的支票

蓝桥杯编号4352—被污染的支票
在这里插入图片描述
问题分析
1.没有被污染的数字都是被污染数字x的因数,这其中不包括1和x本身,其实根据这一点能够很容易的求出x
2.没有被污染的数字可能出错,有两种可能,因数重复出现或者错误

通过上面的思考,我们可以很容易的通过因数求出被污染的数字,但是我们无法确定数字的正确性,那如何验证呢,就从两种出错可能入手。我们知道,因数是成对存在的,但是如果出现平方的情况,因数也可能是奇数个。
经过思考我们可以发现a[i]和a[n-i-1]就是x的一对因数,如果没有被污染的数字无错误的话,那每一对因数的乘积都是相等的,等于a[i]和a[n-i-1]

n = eval(input())
d = list(map(int,input().split()))
d = sorted(d)
t = d[0]*d[n-1]
count = 0
for i in range(int((n+1)/2)):
	if d[i]*d[n-i-1] == t:
		count = count+1
if count == int((n+1)/2):
	print(t)
else:
	print(-1)

  • sorted是python内置的排序函数,直接对d进行升序排序,以便进行计算,然后通过count值来判断是否出错。
  • map 是 Python 中的一个内置函数,它的作用是将一个可迭代对象(如列表、元组等)中的每个元素都应用一个指定的函数,并返回一个迭代器(可以简单理解为一个可以逐个获取元素的对象,类似于列表但不是一次性生成所有元素)。
  • list() 函数用于将一个迭代器(或者其他可迭代对象)转换成列表。
    输入
8
8 2 12 6 4 24 16 3

输出

48

这道题其实很简单,主要是考察对于python一些内置函数的熟练运用和用数学思维解决问题的能力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

badabada_henu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值