PTA|【PTA乙级】【1096 大美数 (15 分)】

2022年3月6日22:23:47
文章目录

  • 2022年3月6日22:23:47
  • 1096 大美数 (15 分)
    • 1.【题目描述】
    • 2.【题解】

1096 大美数 (15 分) 1.【题目描述】 题目链接
若正整数N N N 可以整除它的 4 个不同正因数之和,则称这样的正整数为“大美数”。本题就要求你判断任一给定的正整数是否是“大美数”。
输入格式:
输入在第一行中给出正整数K ( ≤ 10 ) K(≤10) K(≤10),随后一行给出K K K 个待检测的、不超过1 0 4 10^4 104 的正整数。
【PTA|【PTA乙级】【1096 大美数 (15 分)】】输出格式:
对每个需要检测的数字,如果它是大美数就在一行中输出 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"; } }

    推荐阅读