[CSES] Missing number

by | Mar 24, 2024 | Hướng dẫn giải, Uncategorized | 0 comments

Đề bài

Cho dãy gồm $N-1$ số nguyên dương chứa các giá trị trong khoảng từ $1\to N$. Bạn được biết thông thêm thông tin là dãy này thiếu đúng một số. Nhiệm vụ của bạn là phải tìm được chính xác số còn thiếu đó.

Dữ liệu:

  • Dòng đầu tiên chứa số nguyên $N$ $(2 \le N \le 2*10^5)$.
  • Dòng thứ hai chứa $N-1$ số $a_i$ phân biệt với $a_i \in [1,N]$.

Kết quả:

  • Một dòng duy nhất ghi ra giá trị còn thiếu.

Ví dụ:

Input

6

1 2 3 5 6

Output

4

Hướng dẫn

  • Do có duy nhất một số bị thiếu nên ta có thể dùng công thức sau: $$Answer=Sum-CurrentSum$$
  • Trong đó:
    • Tổng từ $1\to N$ như sau: $Sum = \dfrac{N*(N+1)}{2}$.
    • Tổng tất cả các số trong dãy sẽ là $CurrentSum = \sum a_i ; \forall i \in [1,N)$.

Mã nguồn tham khảo

[Đăng ký tài khoản để xem mã nguồn]

#include <bits/stdc++.h>
using namespace std;
#define task "test"

int n;
void solve(){
   cin >> n;
   long long currentsum = 0;
   for(int i=1;i<n;i++){
        int a;
        cin >> a;
        currentsum+=a;
   }
   cout << (1LL*(n+1)*n/2) - currentsum;


}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    if(freopen(task".inp","r",stdin)){
        freopen(task".out","w",stdout);
    }
    int t;
    t=1;
    while(t-->0){
        solve();
    }

}