Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
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
Bình luận
nguyên nhân gì xin các bạn chia sẽ giúp mình với
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
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
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
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")
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?
Sai ở vòng for. for(ll i=2;i<=n;i++) là bạn lấy cả ước n luôn rồi.
ai code bài này AC bằng c++ cho mình xin code với, cứ bị TLE quài á
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; }
có thuật toán O(1)
từ 1 đến 10^9 có 5, 6 số hoàn hảo
include <stdio.h>
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.
include <bits/stdc++.h>
using namespace std;
bool check(int);
int main() {
}
bool check(int n)
{
}
Bạn nên thêm #include<iostream> trc câu using.. để tránh sai
<bits/stdc++.h> là thư viện chuẩn có chứa cả <iostream> rồi bn nhé!
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
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
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é
đọc đề nhầm tý là out luôn =))
Ai làm bên python cho mình biết test 5 là gì đc ko vậy?
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; }
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ó.
cho em hỏi test case 5 là gì v ạ?
Mình nghĩ là liên quan kiểu dữ liệu ấy. Y/c 10^9 lận