今日「每日一题」来啦!历年真题题目:平方和。还没有加入专属刷题群的小伙伴,记得扫码哟~(每天会在群里发蓝桥杯历年真题)
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574,平方和是 14362。
注意,平方和是指将每个数分别平方后求和。
请问,在 1 到 2019 中,所有这样的数的平方和是多少?
本题使用的知识点为 枚举、模拟,涉及组别为第 10 届蓝桥杯软件类 C/C++ A 组、Java A 组。
本题是一个简单的判断数字中是否含有特定数位的题目。我们只需要对 1 到 2019 中每一个数字循环除 10 取余进行数位判断即可。
由于求平方和,可能会导致答案过大,需要用长整型保存答案。
1.Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Long res = 0L;//保存答案
for (int i = 1; i <= 2019; i++)
if (check(i)) res += i*i;//求平方和
System.out.print(res);
}
static boolean check(int n) {
String a=n+"";
if (a.contains("2")||a.contains("0")||a.contains("1")||a.contains("9")){
return true;//若含有特定数位则返回 true
}else {
return false;
}
}
}
2.C/C++
using namespace std;
bool check(int x) {//进行数位判断
int c;
while (x) {
c = x % 10;
if (c == 0 || c == 2 || c == 1 || c == 9) {
return true;//若含有特定数位则返回 true
}
x /= 10;
}
return false;
}
int main() {
long long res = 0;//保存答案
for (int i = 1; i <= 2019; i++) {
if (check(i)) {
res += i * i;//求平方和
}
}
cout << res << endl;
return 0;
}
今日的「每日一题」就结束啦~备战第 14 届蓝桥杯的小伙伴,快来一起刷题吧~
▼加入蓝桥杯备赛刷题▼
原文始发于微信公众号(蓝桥云课精选):蓝桥杯历年真题官方题解——平方和
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论