Giải thích đoạn code tính tổng ước

Mọi ng ơi e có làm bài Viết chương trình nhập vào số nguyên 𝑛. In ra chữ “YES” nếu 𝑛 là số hoàn hảo, ngược chữ “NO” thì e viết code khi e nộp khi đến 1 số thì e cũng hỏi bạn bè các thứ thì bạn e nó chỉ đoạn code này mọi người giải thích giúp e.

Code của e :

#include <iostream>
using namespace std;
 
int main()
{
 int n, i, s=0;
    cin >> n;
    for (i=1; i<n; i++)
    if (n%i==0)  s= s+i;
    if (s==n)
    cout << "YES";
    else cout << "NO";
}

Code của bạn e

#include <iostream>
using namespace std;
 
int main()
{
    int n, i,s=0,dem=0;
    cin>>n;
    for (i=1; i*i<=n; i++)
        if (n%i==0)
             if (i*i!=n) dem=dem+2,  s=s+i+n/i;
    else dem=dem+1, s=s+i;
    if (s==2*n) cout << "YES";
    else cout << "NO";
}

Code e chạy kết quả nó báo là Time limit exceed on test 5

Người ta cho 1 tỉ vô là code bạn sập ngay :smiley: 1 tỉ lệnh có thể xem là rule-of-thumb TLE.

p/s: Vui lòng sử dụng markdown cho code. Mình sửa lần này thôi nhé.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?