VL13 - Kiểm tra số hoàn hảo

View as PDF

Submit solution

Points: 1.00 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Số hoàn hảo (số hoàn thiện) là một số nguyên dương mà tổng các ước nguyên dương của nó (không bao gồm ước lớn nhất) bằng chính nó.

Ví dụ:

~ 6 = 1 + 2 + 3 ~ là một số hoàn hảo.

Nhiệm vụ của bạn là viết chương trình kiểm tra 1 số nguyên nhập từ bàn phím có phải số hoàn hảo hay không!

Input

  • Số nguyên ~n~ cần kiểm tra

Giới hạn

  • ~|n| \le 10^9~

Output

  • In ra YES nếu ~n~ là số hoàn hảo
  • In ra NO nếu ~n~ không phải số hoàn hảo

Sample

Input #1
6
Output #1
YES

Comments

Please read the guidelines before commenting.



  • 0
    phong_tran1202  commented on May 15, 2024, 12:07 p.m.

    include <bits/stdc++.h>

    using namespace std;

    int main() { int n; cin >> n;

    if (n <= 1) {
        cout << "NO";
    } else {
        int sum = 1;
        for (int i = 2; i <= n / 2; i++) {
            if (n % i == 0) sum += i;
        }
    
        if (n == sum) {
            cout << "YES";
        } else {
            cout << "NO";
        }
    }
    
    return 0;
    

    }


  • -1
    holecuong  commented on March 6, 2024, 9:44 p.m.

    nguyên nhân gì xin các bạn chia sẽ giúp mình với


  • -1
    holecuong  commented on March 6, 2024, 9:42 p.m.

    include <iostream>

    using namespace std; bool shh(int a) { int sum =0; for (int i=1; i<=a/2;i++) if (a%i ==0)sum+=i; if (sum==a)return 1; else return 0; } int main() { int n; cin>>n; if (shh(n))cout<<n<<"yes"; else cout<<n<<"no"; return 0; } Sao mình thử chương trình trong máy tính thì cho được kết quả đúng mà gửi bài chấm thì không đúng được test nào


  • 0
    dtdungvnt  commented on March 1, 2024, 2:03 p.m.

    n = int(input())

    if n <= 1: print("NO") else: sum = 0 i = 1 while i*i <= n: if n % i == 0: sum += i j = n // i if (j != i) and (j != n): sum += j

        i += 1
    if n == sum:
        print("YES")
    else:
        print("NO")
    

  • 0
    hailuacx  commented on Jan. 12, 2024, 4:27 p.m.

    include <bits/stdc++.h>

    using namespace std;

    int main() { int n; cin >> n; if (n<=1) { cout << "NO"; } else { int sum = 1; for (int i = 2; i <= n/2; i++){ if(n % i == 0){ sum += i; } } if (sum == n){ cout << "YES"; } else { cout << "NO"; } } return 0; } Full test


  • 0
    DKN13  commented on Jan. 11, 2024, 2:56 a.m.

    x = int(input()) sum = 0; for i in range(1,x): if x%i==0: sum+=i if sum==x: print("YES") else: print("NO")


  • -2
    hh_long  commented on Jan. 8, 2024, 2:43 p.m.

    include <bits/stdc++.h>

    define ll long long

    using namespace std; int main() { iosbase::syncwith_stdio(false); cin.tie(0);cout.tie(0); //freopen("","r",stdin); //freopen("","w",stdout); ll n; cin>>n; ll t=1; for(ll i=2;ii<=n;i++) if(n%i==0) { t+=(i+n/i); if(ii==n) t-=i; } if(t==n) cout<<"YES"; else cout<<"NO"; } o code e sai cho nao nhi?


    • 0
      hailuacx  commented on Jan. 12, 2024, 4:29 p.m.

      Sai ở vòng for. for(ll i=2;i<=n;i++) là bạn lấy cả ước n luôn rồi.


  • -2
    VoPhatDat  commented on Dec. 20, 2023, 1:11 p.m.

    n = int(input()) Sum = 0 if (n <= 0): print("NO") else: i = n while (i != 1): if (n % i == 0): Sum+=i i-=1; if (Sum+1-n==n): print("YES") else: print("NO")


  • 0
    khnguyen21th06  commented on Dec. 3, 2023, 2:56 p.m.

    ai code bài này AC bằng c++ cho mình xin code với, cứ bị TLE quài á


  • -1
    quangdoan__  commented on Nov. 27, 2023, 9:48 a.m.

    include<bits/stdc++.h>

    using namespace std; long long tonguoc(int n){ long long s=0; int i; for( i=1;ii<n;i++) if(n%i==0)s=s+i+n/i; if(ii==n)s=s+i; return s; } int main(){ iosbase::syncwith_stdio(0); cin.tie(0); cout.tie(0); int n; cin>>n; if(2*n==tonguoc(n))cout<<"YES"; else cout<<"NO"; return 0; }


  • -2
    TADZCO102  commented on Nov. 24, 2023, 1:55 a.m.

    có thuật toán O(1)


    • -2
      TQThong2k11  commented on Dec. 14, 2023, 1:55 a.m.

      từ 1 đến 10^9 có 5, 6 số hoàn hảo


  • -3
    nguien_24  commented on Oct. 22, 2023, 10:08 a.m. edited

    include <stdio.h>

    #include <math.h>
    long long int mu(int a,int b){
       int x=1;
       for (int i=1;i<=b;i++){
        x = x*a;
       }
       return x;
    }
    int shh(int n){
        for (int i=2; i<=10;i++){
            if (n ==mu(2,i-1)*(mu(2,i)-1)) return 1;
        }
        return 0;
    }
    int main(){
        int n;
        scanf("%d",&n);
        if (shh(n) ==0) printf("NO");
        else printf("YES");
    }
    

  • -2
    phongnguyen19811  commented on Oct. 15, 2023, 6:46 a.m.

    uses crt; var n,i,s:longint; begin readln(n); for i:=1 to n-1 do if n mod i=0 then s:=s+i; if n=s then write('YES') else write('NO'); readln; end.


  • -2
    ngkhacbaolam2809  commented on Sept. 2, 2023, 2:30 a.m.

    include <bits/stdc++.h>

    using namespace std;

    bool check(int);

    int main() {

    int n;
    
    cin >> n;
    if( check( n ) )
    {
        cout << "YES";
    }
    else
    {
        cout << "NO";
    }
    return 0;
    

    }

    bool check(int n)

    {

    int sum = 0;
    
    for(int i=1;i<=n/2;i++)
        {
        if(n%i==0) 
            sum+=i;
    }
    if(sum==n)
             return true; 
    
    return false;
    

    }


    • -3
      ngochagiang2003  commented on Oct. 20, 2023, 7:41 a.m.

      Bạn nên thêm #include<iostream> trc câu using.. để tránh sai


      • -2
        hieuthuba1907  commented on Dec. 27, 2023, 7:27 a.m.

        <bits/stdc++.h> là thư viện chuẩn có chứa cả <iostream> rồi bn nhé!


  • -3
    HuyTagama  commented on Sept. 1, 2023, 2:04 p.m.

    Bài này các bạn check nếu n <= 1 thì in ra No, còn lại kiểm tra bình thường, test 5 là test số âm mà yêu cầu đề, số hh là số nguyên dương


  • -7
    krenja102  commented on Aug. 14, 2023, 2:36 p.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -2
    Iamnotsmart  commented on Aug. 11, 2023, 1:23 p.m.

    Test 5 là số âm nên mấy bn ko cần làm check số hoàn hảo cho số âm nhé


    • -1
      tungkq123  commented on Nov. 28, 2023, 9:08 a.m.

      đọc đề nhầm tý là out luôn =))


  • -3
    thiennguyen  commented on July 25, 2023, 6:35 a.m.

    Ai làm bên python cho mình biết test 5 là gì đc ko vậy?


  • -1
    Yorickur  commented on July 22, 2023, 4:12 p.m.

    dạ cho mình hỏi code mình sai chỗ nào vậy ạ, mình bị sai ngay test case đầu tiên luôn bool hoanthien(int n) { int temp = 1; for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) { temp += i; if (i != n / i) { temp += n / i; } } } return temp == n; }


    • 1
      lch101  commented on July 22, 2023, 7:43 p.m.

      Thứ nhất: tại i = 1. thì temp += 1 && tmp += n như này đã vi phạm đoạn tính ước là chính nó. Thứ 2: Bạn thiếu case n = 1 thì nó không phải là số hoàn hảo nhé vì shh không bao gồm ước là chính nó.


  • 0
    yoonicornsyndrome  commented on July 12, 2023, 7:37 p.m.

    cho em hỏi test case 5 là gì v ạ?


    • -1
      hoangnguyenn268  commented on July 14, 2023, 5:42 a.m.

      Mình nghĩ là liên quan kiểu dữ liệu ấy. Y/c 10^9 lận