加法中,通过和减去一个加数,就得到了另外一个加数。
在程序中,我们抽取列表中的一个值(可以遍历),用和减去这个值,找到另外一个加数。如果这个加数存在(上面的函数),那么就算是找到了。
#include<bits/stdc++.h>
using namespace std;
long long n, t, a[1000001];
int search(int x) {
int left = 1, right = n, mid;
while (left <= right) {
mid = (right + left) >> 1;
if (a[mid] < x)
left = mid + 1;
else if (a[mid] > x)
right = mid - 1;
else
return a[mid];
}
return -1; // Not found
}
int main() {
cin.tie(0);
cin >> n;
for (int i = 0; i < n; ++i)
cin >> a[i];
cin >> t;
for (int i = 0; i < n; ++i)
if (search(t - a[i]) != -1 && search(t - a[i]) != a[i]) {
cout << "Yes";
return 0;
}
cout << "No";
return 0;
}
评论区