「PAT乙级真题解析」Basic Level 1091 N-自守数 (问题分析+完整步骤+伪代码描述+提交通过代码)
创始人
2024-02-12 07:17:23
0

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

PAT (Basic Level) Practice 1091 N-自守数

问题分析

题目给定一个定义, 给定一组数, 要求输出能够让每个数符合题设定义的正整数, 不存在这样的正整数时输出"No".
需要满足的条件是, 正整数N乘以给定的数K的平方得到的乘积以K为结尾。

如何检查一个数是否以另一个数结尾

方案一: 如果是以数值形式存储两个数

要获取某个数值各个数位上的数字,需要使用取余从后往前获取。
所以如果两个数都是以数值形式存储, 需要同时对两个数对10取余,如果余数不同则说明不满足要求。
如果直到某一个数等于0, 都没有出现余数不同的情况, 则满足要求。

方案二: 如果是以字符串形式存储两个数

计算较短的数的位数, 然后直接使用索引访问比较。

完整描述过程

  1. 获取输入: 要检查的正整数个数, 给定的各个正整数
  2. 对于各个正整数:
    • 系数从1到9, 进行以下检查:
      • 如果系数乘以正整数平方得到的乘积, 以正整数结尾, 则:
        • 输出这个系数以及得到的乘积。
        • 直接进入下一个正整数的处理
    • 如果系数从1到9都不符合要求, 则输出"No".

伪代码描述

  1. get input: case_amount;
  2. for each case:
    • get input: number
    • init flag:
      • found = False
    • calculate square = number * number;
    • for coefficient in range(1, 10):
      • calculate product = coefficient * square;
      • if is_postfix(number, product):
        • found = True;
        • print(“{number} {product}”);
        • break;
    • if not found:
      • print(“No”)

完整提交代码

/*
# 问题分析
题目给定一个定义, 给定一组数, 要求输出能够让每个数符合题设定义的正整数, 不存在这样的正整数时输出"No".
需要满足的条件是, 正整数N乘以给定的数K的平方得到的乘积以K为结尾。## 如何检查一个数是否以另一个数结尾
### 方案一: 如果是以数值形式存储两个数
要获取某个数值各个数位上的数字,需要使用取余从后往前获取。
所以如果两个数都是以数值形式存储, 需要同时对两个数对10取余,如果余数不同则说明不满足要求。
如果直到某一个数等于0, 都没有出现余数不同的情况, 则满足要求。### 方案二: 如果是以字符串形式存储两个数
计算较短的数的位数, 然后直接使用索引访问比较。# 完整描述过程
1. 获取输入: 要检查的正整数个数, 给定的各个正整数
2. 对于各个正整数:- 系数从1到9, 进行以下检查:- 如果系数乘以正整数平方得到的乘积, 以正整数结尾, 则:- 输出这个系数以及得到的乘积。- 直接进入下一个正整数的处理- 如果系数从1到9都不符合要求, 则输出"No".# 伪代码描述
1. get input: case_amount;
2. for each case:- get input: number- init flag:- found = False- calculate square = number * number;- for coefficient in range(1, 10):- calculate product = coefficient * square;- if is_postfix(number, product):- found = True;- print("{number} {product}");- break;- if not found:- print("No")
*/# includeint meet_condition(int number, int result){while (number != 0){int remainder = number % 10;if (result % 10 != remainder){return 0;}number /= 10;result /= 10;}return 1;
}int main(){int case_amount;scanf("%d", &case_amount);int number, square, result;int found;for (int i = 0; i < case_amount; i++){scanf("%d", &number);square = number * number;found = 0;for (int j = 1; j < 10; j++){result = square * j;if (meet_condition(number, result) == 1){printf("%d %d\n", j, result);found = 1;break;}}if (found == 0){printf("No\n");}}return 0;
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...