当前位置: 首页 > news >正文

「PAT乙级真题解析」Basic Level 1096 大美数 (问题分析+完整步骤+伪代码描述+提交通过代码)

乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。

PAT (Basic Level) Practice 1096 大美数

问题分析

  • 题目要求过于明确, 只想到用穷举法。
  • 由于是检查4个正因数之和是否能被原整数整除,所以穷举需要写四重循环。
  • 由于因数组合的顺序不影响因数和, 即也不影响被原整数整除, 所以内层循环都以上一层循环的值+1作为初始值。

完整描述步骤

  1. 获取输入: 正整数个数, 各个正整数
  2. 对于每一个正整数:
    • 初始化标志位:
      • 找到了满足条件的组合标志位 = False
    • 设置四层循环, 对于每一层循环:
      • 先检查标志位是否为True, 如果为真直接break
      • 如果当前循环的数值不能被当前检查的正整数整除, 直接continue
    • 在第四层循环时才列举齐全需要检查的4个正因数组合, 第二层进行检查:
      • 如果正整数能够整除这4个正因数的和:
        • 找到了满足条件的组合标志位 = True
    • 如果 标志位 为 True:
      • 输出"Yes"
    • 否则:
      • 输出"No"

伪代码描述

  1. get input: case_amount
  2. for each case:
    • get input: number
    • init recorder:
      • is_met_conditions = False
    • for a in range(1, number):
      • if is_met_conditions: break;
      • if number % a != 0: continue;
      • for b in range(a+1, number):
        • if is_met_conditions: break;
        • if number % b != 0: continue;
        • for c in range(b+1, number):
          • if is_met_conditions: break;
          • if number % c != 0: continue;
          • for d in range(c+1, number):
            • if is_met_conditions: break;
            • if number % d != 0: continue;
            • if number % (a+b+c+d) == 0:
              • is_met_conditions = True
    • if is_met_conditions:
      • print(“Yes”)
    • else:
      • print(“No”)

完整提交代码

/*
# 问题分析
题目要求过于明确, 只想到用穷举法。
由于是检查4个正因数之和是否能被原整数整除,所以穷举需要写四重循环。
由于因数组合的顺序不影响因数和, 即也不影响被原整数整除, 所以内层循环都以上一层循环的值+1作为初始值。

# 完整描述步骤
1. 获取输入: 正整数个数, 各个正整数
2. 对于每一个正整数:
    - 初始化标志位:
        - 找到了满足条件的组合标志位 = False
    - 设置四层循环, 对于每一层循环:
        - 先检查标志位是否为True, 如果为真直接break
        - 如果当前循环的数值不能被当前检查的正整数整除, 直接continue
    - 在第四层循环时才列举齐全需要检查的4个正因数组合, 第二层进行检查:
        - 如果正整数能够整除这4个正因数的和:
            - 找到了满足条件的组合标志位 = True
    - 如果 标志位 为 True:
        - 输出"Yes"
    - 否则:
        - 输出"No"

# 伪代码描述
1. get input: case_amount
2. for each case:
    - get input: number
    - init recorder:
        - is_met_conditions = False
    - for a in range(1, number):
        - if is_met_conditions: break;
        - if number % a != 0: continue;
        - for b in range(a+1, number):
            - if is_met_conditions: break;
            - if number % b != 0: continue;
            - for c in range(b+1, number):
                - if is_met_conditions: break;
                - if number % c != 0: continue;
                - for d in range(c+1, number):
                    - if is_met_conditions: break;
                    - if number % d != 0: continue;
                    - if number % (a+b+c+d) == 0:
                        - is_met_conditions = True
    - if is_met_conditions:
        - print("Yes")
    - else:
        - print("No")

*/


# include<stdio.h>

int is_super_beautiful_number(int number){
    int flag = 0;
    for(int a = 1; a < number; a++){
        if (flag) break;
        if (number % a != 0) continue;
        for(int b = a+1; b < number; b++){
            if (flag) break;
            if (number % b != 0) continue;
            for(int c = b+1; c < number; c++){
                if (flag) break;
                if (number % c != 0) continue;
                for(int d = c+1; d <= number; d++){
                    if (flag) break;
                    if (number % d != 0) continue;
                    if ((a + b + c + d) % number == 0){
                        flag = 1;
                    }
                }
            }
        }
    }
    
    return flag;
}

int main(){
    int case_amount;
    scanf("%d", &case_amount);

    int number, flag;
    for (int i = 0; i < case_amount; i++){
        scanf("%d", &number);
        int is_met_conditions = is_super_beautiful_number(number);

        if (is_met_conditions){
            printf("Yes\n");
        } else {
            printf("No\n");
        }
    }
    
    return 0;
}

相关文章:

  • 政府网站建设的流程/提高工作效率的句子
  • 获取网站访客qq号码/百度网站首页提交入口
  • 网站首页如何设计/太原网站制作推广
  • 网站访客qq获取/如何投放网络广告
  • node.js可以做网站么/最新经济新闻
  • 建设部网站怎么查询企业业绩/seo系统培训
  • 使用Anaconda安装TensorFlow详细教程
  • wifi热点setting
  • stable diffuison论文阅读
  • 开源工具系列1:Cloud Custodian
  • Java 的三种技术架构
  • 智能表格软件-FineReport JS实现自定义按钮快速给参数赋指定范围值
  • CSDN第17次竞赛题解与总结
  • mybatis相关使用_lombok插件
  • 5G核心网UPF硬件加速技术
  • 服务之星网络评选视频投票小程序如何进行视频投票免费公众号投票
  • 解决原 Unique Key 模型存在的问题
  • Shell ❀ 正则表达式