1 条题解
-
0
一、解题思路
- 输入姻缘签数量
N,以及两个妖力值A、B。 - 计算总妖力值
target = A + B。 - 依次输入每枚姻缘签的数值
C,同时判断它是否等于target。 - 如果相等,就输出当前姻缘签的编号
i + 1,然后结束程序。
注意: 题目中的姻缘签编号从
1开始,而 C 语言数组下标从0开始,因此输出时需要使用i + 1。二、C 语言参考代码
#include <stdio.h> int main(void) { int N, A, B; int C[305]; scanf("%d %d %d", &N, &A, &B); for (int i = 0; i < N; i++) { scanf("%d", &C[i]); } int target = A + B; for (int i = 0; i < N; i++) { if (C[i] == target) { printf("%d\n", i + 1); return 0; } } return 0; }三、样例演示
输入:
3 125 175 200 300 400执行过程:
姻缘签编号 数值 是否等于 (125+175=300) 1 200 否 2 300 是 3 400 不需要继续检查 输出:
2四、复杂度分析
- 时间复杂度: (O(N)),最多遍历数组两次。
- 空间复杂度: (O(N)),使用数组保存所有姻缘签的数值。
题目给出的 (N <= 300),所以这种解法完全满足要求。
五、提交前注意事项
- 不要输出额外文字,例如
The answer is:或姻缘签编号是。 - 编号从
1开始,所以不能直接输出i。 - 数组大小
305足够存储最多300个整数。 - 题目保证答案一定存在,不需要额外处理找不到答案的情况。
总结: 这是一道典型的数组线性查找题,核心就是计算
A + B,再寻找与其相等的数组元素并输出下标加一。 - 输入姻缘签数量
- 1
信息
- ID
- 1243
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 140
- 已通过
- 41
- 上传者