判断自守数,本题是2022年1月22日举办的第13届蓝桥杯青少组Python编程选拔赛真题编程部分第3题。题目要求对于给定的正整数,判断它是否为自守数,并输出字母"Y"和"N"。
先来看看题目的要求吧。
提示信息:
一个正整数的平方的尾数一位或者几位数等于这个正整数,称为自守数
如:正整数 5 的平方为 25,25 的尾数一位是 5;
正整数 25 的平方为 625,625 的尾数两位是 25。
编程实现:
给定一个正整数,判断这个正整数是否为自守数,如果是输出大写字母“Y”,否者输出大写字母“N”。
注:1 为自守数
输入描述:
输入一个正整数
输出描述:
判断这个正整数是否为自守数,如果是输出大写字母“Y”,否者输出大写字母“N”
样例输入:
5
样例输出:
Y
这是一道简单的数论题,涉及的知识点包括数学运算和字符串处理等。
5: (5) ^ 2 = 25
6: (6) ^ 2 = 36
25: (25) ^ 2 = 625
76: (76) ^ 2 = 5776
376: (376) ^ 2 = 141376
625: (625) ^ 2 = 390625
9376: (3476) ^ 2 = 87909376
90625: (90625) ^ 2 = 8212890625
109376: (109376) ^ 2 = 11963109376
数学方法 字符串方法
str.endswith(suffix[, start[, end]])
suffix: 要匹配的后缀字符串或字符串元组。如果是元组,则其中任意一个字符串匹配即可返回 True;
start (可选): 查找的起始位置索引,默认为 0;
end (可选): 查找的结束位置索引,默认为字符串长度。
思路有了,接下来,我们就进入具体的编程实现环节。
数学方法
字符串方法
1. 数学方法
根据前面的思路分析,编写代码如下:
代码比较简单,说明两点:
1). 在Python中,对于字符串可以使用s[-k:]截取后k位字符串;
2). 截取字符串后,需要转成整型,再和n进行比较。
2. 字符串方法
直接使用endswith()函数,编写代码如下:
这个就比较简单了,注意一个细节,就是n * n 和 n都需要转成字符串类型。
至此,整个程序就全部完成了,你可以输入不同的数字来测试效果啦。
类型转换;
条件语句;
字符串运算;
字符串函数;
本题代码少,比较容易,关键点是找到自守数的特点,然后使用相应的方法来实现。
上面给出的两种方法,数学方法更为通用,可以适用于所有的编程语言,字符串方法则是借助了Python提供的字符串函数,编写程序更加简单。
对于这类题目,我们必须要同时熟练掌握这两种方法,这样才能更好的提升自己的编程水平。
超平老师给你留一道思考题,如何编程输出1~100000之间所有的自守数。
你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。
需要源码的,可以添加本人微信。
另外,超平老师创建了一个蓝桥杯备考交流群,这是专门为老师和家长打造的免费社群,您可以与来自全国各地的老师、家长共同交流经验,分享学习心得。
超平老师也会给大家带来及时的赛事动态,备考攻略,真题资源分享,帮助各位更好地备考第15届蓝桥杯赛事,力争取得优异的成绩。
扫码或长按加入微信群