1096 大美数

£神魔★判官ぃ 2024-04-03 08:25 183阅读 0赞

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

输入格式:

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

输出格式:

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

输入样例:

  1. 3
  2. 18 29 40

输出样例:

  1. Yes
  2. No
  3. Yes
  4. import java.io.BufferedReader;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.util.ArrayList;
  8. import java.util.HashSet;
  9. /**
  10. * @author sihua
  11. * @create 2022-10-02-11:01
  12. */
  13. public class Main {
  14. public static void main(String[] args) throws IOException {
  15. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  16. int k = Integer.parseInt(reader.readLine());//循环次数
  17. String nums[] = reader.readLine().split(" ");//所检测的所有数
  18. for (int a = 0; a < k; a++) {
  19. if (isHave(nums[a])) {
  20. System.out.println("Yes");
  21. } else {
  22. System.out.println("No");
  23. }
  24. }
  25. }
  26. static void getFactor(int x, HashSet<Integer> factors) {
  27. for (int i = 1; i <= Math.sqrt(x); i++) {
  28. if (x % i == 0) {
  29. factors.add(i);
  30. factors.add(x / i);
  31. }
  32. }
  33. }
  34. static boolean isHave(String str) {
  35. HashSet<Integer> factors = new HashSet<>();//存储一个数的因数(添加数据不可重复)
  36. int x = Integer.parseInt(str);//目标数的整型
  37. getFactor(x, factors);
  38. ArrayList<Integer> factorss = new ArrayList<>(factors);//HashSet转化为ArrayList.
  39. int size = factorss.size();
  40. if (factors.size() >= 4) {
  41. for (int i = 0; i < size; i++) {
  42. for (int j = i + 1; j < size; j++) {
  43. for (int l = j + 1; l < size; l++) {
  44. for (int m = l + 1; m < size; m++) {
  45. int sum = factorss.get(i) + factorss.get(j) + factorss.get(l) + factorss.get(m);
  46. if (sum % x == 0) {
  47. return true;
  48. }
  49. }
  50. }
  51. }
  52. }
  53. return false;
  54. }
  55. return false;
  56. }
  57. }

发表评论

表情:
评论列表 (有 0 条评论,183人围观)

还没有评论,来说两句吧...

相关阅读

    相关 1096

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

    相关 【DP】CF1096D Easy Problem

    题意: 现在有一个由小写字母组成的[字符串][Link 1],去掉这个字符串的第i个位置的字符会有ai的代价。你的任务是去掉这个字符串中的一些字符使得该字符串中不包含子序列h

    相关 1096 (JAVA)

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

    相关 1096B - Substring Removal

    题意:给了长度为n的字符,删除其中的字符,让剩下的字符一样,就满足条件,输出有多少种删法,全部删除,留一个字符也满足条件。 题解:先统计前面连续相同的字符个数,再统计后面连续