题目大意:有1,2,…,n之间的所有数字,现在缺了一个,要求找到丢失的那个。
解决方法:由于是等差数列,用数列求和求出没有缺失时的和,然后与这些数字相减,最后剩下的就是缺失的那个。
要点 | 用途 |
---|---|
1LL*(x) | 将x变为long long |
(n*(n+1))>>1 | sum = 1+2+3+…+n |
#include <bits/stdc++.h>
#define _for(i,a,b) for(int i=(a);i<(b);++i)
using namespace std;
int main() {
int n; cin >> n;
long long sum = (1LL*(n+1)*n)>>1;
_for(i,1,n) {
int t; cin >> t;
sum -= t;
}
cout << sum;
return 0;
}