复旦20考研机试真题(A)--斗牛

该博客介绍了复旦大学20考研机试真题,涉及寻找五个0~9整数中是否存在三个数的和为10的倍数。如果存在,权值为未被选中两数之和对10取余;若不存在,则权值为-1。博主分享了考场上的三重循环解决方案和优化后的简洁思路。
摘要由CSDN通过智能技术生成

给定5个 0~9 范围内的整数 a1, a2, a3, a4, a5。如果能从五个整数中选出三个并且这三个整数的和为 10 的倍数(包括 0),那么这五个整数的权值即为剩下两个没被选出来的整数的和对 10 取余的结果,显然如果有多个三元组满⾜和是 10 的倍数,剩下两个数之和对 10 取余的结果都是相同的;如果 选不出这样三个整数,则这五个整数的权值为 -1。 现在给定 T 组数据,每组数据包含五个 0~9 范围内的整数,分别求这 T 组数据中五个整数的权值。
【输⼊格式】 第⼀⾏⼀个整数 T (1<=T<=1000),表⽰数据组数。 接下来 T ⾏,每⾏ 5 个 0~9 的整数,表⽰⼀组数据。
【输出格式】 输出 T ⾏,每⾏⼀个整数,表⽰每组数据中五个整数的权值。
【样例输⼊】

 4
 1 0 0 1 0
 1 0 0 8 6
 3 4 5 6 7
 4 5 6 7 8 

【样例输出】

2
-1
-1
0

【解释】 在第⼀组(1 0 0 1 0)中,三元组 0 0 0 的和为 0,是 10 的倍数,剩余的 1 1 之和为 2,对 10 取余为 2。在第⼆组中,不存在任何⼀个三元祖只和为 10 的倍数。 在第四组中,三元组 5 7 8 的和为 20,是 10 的倍数,剩余的 4 6 只和为 10,对 10取余为 0。 在第五组中,三元组 0 3 7 和三元组 0 4 6 的和都是 10,是 10 的倍数,但是根据简单的数论可知,如 果存在多个三元组满⾜情况,那么剩余数字的结果之和对 10 取余是相等的,在本例中和为 10,对 10 取余为 0。
【时空限制】 2500ms,256MB

这道题目,我AC了,但是代码逻辑写的还是有些繁琐;下面我先给出考场上的代码,再给出我修改过的代码;

考场代码:

#include<iostream> 
int cal(int a[], int i, int j, int k) {
   
	int b[2], cnt = 0;
	for (int L = 0; L < 5; L++) {
   
		if ((L != i) && (L != j) && (L != k))
			b[cnt++
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值