蓝桥杯平方末尾(思维-枚举)

1. 问题描述:

能够表示为某个整数的平方的数字称为“平方数”。比如,25,64虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数。因为平方数的末位只可能是:[0, 1, 4, 5, 6, 9] 这6个数字中的某个。所以,4325435332必然不是平方数。 
如果给你一个2位或2位以上的数字,你能根据末位的两位来断定它不是平方数吗? 
请计算一下,一个2位以上的平方数的最后两位有多少种可能性? 

来源:http://oj.ecustacm.cn/problem.php?id=1311

2. 思路分析:

理解清楚题目其实还是很简单的,举几个简单的例子就可以知道怎么样解决了,比如长度为3的平方数125 * 125,平方末尾的数字只与25 * 25的结果的后面两位数字是相关的,与其他位上的数字是无关的,例如101 * 101平方末尾的两个数字只与01 * 01相乘的结果是有关的,所以我们只需要计算[0,99]的平方数字的末尾两位数字,加入到set集合中去重即可,最后set集合的长度就是最终平方末尾两位数字的所有可能。最终的答案是22。

3. 代码如下:

if __name__ == '__main__':
    rec = set()
    i = 0
    while i < 100:
        s = str(i * i)
        if len(s) >= 2:
            rec.add(s[len(s) - 2: len(s)])
        else:
            rec.add("0" + s)
        i += 1
    print(rec)
    print(len(rec))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值