问题描述
与7相关的数:如果一个正整数,它能被7整除或者它的十进制表示法中某个位数上的数字为7,则称之为与7相关的数。(10分)
题目内容:
现在我们给定一个正整数n(n<1000),求所有小于等于n的与7无关的正整数的平方和。
输入格式:共一行,为一个正整数。
输出格式:共一行,为一个正整数。
输入样例:50
输出样例:31469
初次尝试 就看见了什么叫做与7相关数的概念,求了半天的与7相关数的平方和,怎么看都和样例不一样 第二次尝试经历过长达20分钟的自我质疑和debug我终于决定重新审一遍题,发现是不想关的数的和,那就求出所有数的和,然后减去就行了。和样例一样了,但是没通过,想了很多种情况终于出来了
修改之后的代码——直接求和max = input() sum = 0 num = 0 while num <= int(max) : flag = 1 str1 = str(num) for letter in str1: if letter == '7': flag = 0 break if flag == 0 : num = num + 1 continue if num % 7 == 0: num = num + 1 else: sum = sum + num ** 2 num = num + 1 print(sum)
12345678910111213141516171819' 总结——我遇到的坑 按照我的代码:如果一个数包含7,经过分解字符串判定,是否包含7,包含7,迭代条件就加一,想当然的以为,加一就不会包含7了。没想过如果7,是十位或者是百位,那结果一定是错的。不管是什么数,先判断是否包含7,包含7,直接结束本次循环,没有必要判定是否还会是7的倍数;不包含7,继续判定,是否是7的倍数,使得话在结束本次循环,最后都没有通过的数才是正确的与7,无关的数辨别一串数字中,是否含有某一个数字,用下面的方法:str1 = str(num) for letter in str1: if letter == '7': num = num + 1 1234