❗注意:
下列题我全部都使用 Java 语言写的,并且均可以提交成功,获得Accepted 结果的. 如果代码和详解看了之后,对答案有任何疑问,都可以在评论区提出来,我都会一个一个回答.
❗感谢大家的支持,如果喜欢我的博客,关注 点赞 收藏 评论一波,非常感谢!!!
题目
一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数.现求所有小于等于n(n < 100)的与7无关的正整数的平方和.
Input
输入为一行,正整数n(n < 100)
Output
输出一行,包含一个整数,即小于等于n的所有与7无关的正整数的平方和。
样例
输入
21
输出
2336
代码
import java.util.Scanner;
//与7无关的数:不是7的倍数且不含7
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int sum = 0;
for (int i = 1; i <= n; i++) {
if(i%7!=0&&!func(i)){
sum+=i*i;
}
}
System.out.println(sum);
}
public static boolean func(int num){
while(num>0){
if(num%10==7){
return true;
}
num/=10;
}
return false;
}
}
详解
初步思路
要找出小于等于n且与7无关的正整数并计算它们的平方和,我们需要检查每个数是否满足两个条件:既不能被7整除,也不能包含数字7。这可以通过遍历从1到n的每个数并逐个检查它们来实现。
具体步骤
-
输入解析
读取一个整数n(n < 100)。 -
遍历和检查每个数
遍历从1到n的每个数。
对每个数,检查它是否能被7整除,或其十进制表示中是否包含数字7。
如果一个数不满足上述任何一个条件,则将其平方加到总和中。
-
实现检查函数
实现一个函数func来判断一个数的十进制表示中是否包含数字7。
如果数的任一位为7,则返回true;否则返回false。 -
计算平方和
初始化一个变量来存储平方和。
对每个与7无关的数,计算其平方并累加到平方和变量中。 -
输出结果
输出最终计算出的平方和。
分步作答
-
初始化和输入读取
使用Scanner读取输入的整数n。 -
遍历和条件检查
使用一个循环从1遍历到n。
对于每个数i,检查 i % 7 != 0且!func(i)for (int i = 1; i <= n; i++) { if (i % 7 != 0 && !func(i)) { sum += i * i; } }
-
实现检查函数
定义一个函数func来检查一个数的每一位是否包含数字7:public static boolean func(int num) { while (num > 0) { if (num % 10 == 7) { return true; } num /= 10; } return false; }
-
计算和输出结果
初始化一个变量sum为0来累加平方和。
在满足条件时,将i的平方加到sum中。
最后输出sum。
总结方法
这种方法的关键在于两个部分:
- 条件检查:使用简单的数学运算(取余和除法)来检查数字的特定属性(是否是7的倍数或包含数字7)。
- 累加和:逐个累加符合条件的数的平方。