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.【题解】
- 初始化处理这个数 N N N 的所有因子,储存在数组中,用循环暴力遍历因子数组;
- 因为四个因子需要不同,所以遍历的四个下标需不同;
- 四个不同因子的和 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";
}
}