2022年3月6日22:23:47

1096 大美数 (15 分)

1.【题目描述】

题目链接
若正整数 N N N 可以整除它的 4 个不同正因数之和,则称这样的正整数为“大美数”。本题就要求你判断任一给定的正整数是否是“大美数”。

输入格式:
输入在第一行中给出正整数 K ( ≤ 10 ) K(≤10) K(10),随后一行给出 K K K 个待检测的、不超过 1 0 4 10^4 104 的正整数。

输出格式:
对每个需要检测的数字,如果它是大美数就在一行中输出 Yes,否则输出 No

2.【题解】

  1. 初始化处理这个数 N N N 的所有因子,储存在数组中,用循环暴力遍历因子数组;
  2. 因为四个因子需要不同,所以遍历的四个下标需不同;
  3. 四个不同因子的和 s u m sum sum % n n n == 0 0 0
void solve(){
   
    int n;
    cin >> n;
    int a[10100] = {
   0};
    int cnt = 0;
    for (int i = 1; i <= n;i++){
   
        if(n%i==0)
            a[cnt++] = i;
    }
    if(cnt<4)
        cout << "No\n";
    else{
   
        int flag = 0;
        for (int i = 0; i < cnt-3;i++){
   
            for (int j = i+1; j < cnt-2;j++){
   
                for (int k = j+1; k < cnt-1;k++){
   
                    for (int m = k+1; m < cnt;m++){
   
                        if((a[i]+a[j]+a[k]+a[m])%n==0){
   
                            flag = 1;
                        }
                           
                    }
                }
            }
        }
        if(flag)
            cout << "Yes\n";
        else
            cout << "No\n";
    }
}