若正整数 N 可以整除它的 4 个不同正因数之和,则称这样的正整数为“大美数”。本题就要求你判断任一给定的正整数是否是“大美数”。 输入格式:输入在第一行中给出正整数 K(≤10),随后一行给出 K 个待检测的、不超过 104 的正整数。 输出格式:对每个需要检测的数字,如果它是大美数就在一行中输出 |
输入样例:
3
18 29 40
输出样例:
Yes
No
Yes
考察 : 简单逻辑判断 |
注意 : 是4个因数和%N==0,别搞反了 |
思路 : 暴力枚举 |
C/C++
#include<bits/stdc++.h>
using namespace std;
bool OK(int n);
int main()
{
int K,N;
cin >> K;
while (K--){
cin >> N;
if(OK(N)) cout << "Yes" << endl;
else cout << "No" << endl;
}
return 0;
}
bool OK(int n) {
int num[101]={0},len=0;
for(int z=1;z<=n;z++) if(n%z==0) num[len++] = z;
for(int z=0;z<len-3;z++)
for(int z1=z+1;z1<len-2;z1++)
for(int z2=z1+1;z2<len-1;z2++)
for(int z3=z2+1;z3<len;z3++)
{
int result = num[z]+num[z1]+num[z2]+num[z3];
if(result%n==0) return true;
}
return false;
}