Phần tử còn thiếu


Submit solution

Points: 3
Time limit: 1.0s
Memory limit: 117M

Author:
Problem type

Toto được giao lập trình sinh ra một dãy hoán vị của tập \(\{ 1,2 ,3... n\}\)

Toto gửi kết quả cho cô giáo nhưng lại bị thiếu mất một số bạn hãy giúp Toto chỉ ra phần tử thiếu là phần tử nào nhé

Input

Một dòng có \(n-1\) số bạn phải đọc đến khi EOF để lấy dữ liệu biết rằng số phần tử của dãy này không vượt quá \(10^6\)

Output

Một số nguyên dương duy nhất còn thiếu trong dãy

Ví dụ 1

Input

4 7 2 8 1 6 9 3

Output

5

Ví dụ 2

Input

4 7 2 8 1 6 5 3

Output

9

Chú ý cách đọc đến hết file trong C

while(scanf("%d",&x)!=EOF)

Chú ý cách đọc đến hết file trong C++

while(cin>>x)
tichpx

Comments


  • 2
    TICHPX  commented on Jan. 4, 2022, 3:30 a.m.

    Tham khảo

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        long long x,n=1,s=0;
        while(cin>>x){s+=x;n++;}
        cout<<n*(n+1)/2-s;
    }

    • 1
      ga123  commented on Jan. 6, 2022, 5:03 a.m.

      owo thầy giải thích thuật toán này được không ạ


      • 4
        CThành_CNTT6_K61  commented on Jan. 6, 2022, 5:58 a.m.

        Nó đơn giản là đếm xem có bao nhiêu số, dùng công thức tính tổng từ 1 đến n số rồi trừ đi tổng của n - 1 số còn lại


    • 2
      LãoTam  commented on Jan. 5, 2022, 1:18 a.m.

      thầy đúng là trùm cuối, luôn có những cách code ngắn gọn nhất:))


  • 0
    LãoTam  commented on Jan. 3, 2022, 3:30 a.m.

    [user:Tham Khảo ^_^]

    #include<bits/stdc++.h>
    #include<iostream>
    using namespace std;
    
    int main() {
    
            int n=0;
            int d[1000000]={0};
            int val;
            while(cin>>val){
    
        //  cin>>val;
                d[val]=1;
                n++;
    
                }
                for(int i=1;i<=n+1;i++)
                {
                    if(d[i]==0)
                    {
                        cout<<i;
                        break;
                        }
                        }
    
    
    }

    code của anh khóa trên 1 code rất hay các bạn có thể tham khảo

    #include<stdio.h>
    int main(){
        long s1=0,s2=0,max=0,x;
        while(scanf("%ld",&x)!=EOF){
            max=x>max?x:max;
            s1+=x;
        }
        for(int i=1;i<=max;i++) s2+=i;
        if(s2-s1==0) printf("%ld",max+1);
        else printf("%ld",s2-s1);
    }