PAT 乙级1096大美数

题目:

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

输入格式:

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

输出格式:

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

输入样例:

3
18 29 40

输出样例:

Yes
No
Yes

代码: 

#include
using namespace std;
bool check(int n){
    setyinshu;
    for(int j=1;j<=n;j++){
        if(n%j==0){
            yinshu.insert(j);
            yinshu.insert(n/j);
            }
        }
    vectorv;
    for(auto it=yinshu.begin();it!=yinshu.end();it++){
        v.push_back(*it);
    }
    for (int i = 0; i < v.size(); i++)
        for (int j = i + 1; j < v.size(); j++)
            for (int l = j + 1; l < v.size(); l++)
                for (int r = l + 1; r < v.size(); r++)
                    if ((v[i] + v[j] + v[l] + v[r]) % n == 0) return true;
    return false;    
}



int main(){
    int n;
    cin>>n;
    for(int i=0;i>x;
        if(check(x))cout<<"Yes"<

你可能感兴趣的:(c++,算法,c++)