欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第十届蓝桥杯省赛C/C++A组——试题A:平方和

程序员文章站 2022-06-26 13:29:01
...

试题A:平方和

首先描述一下自己参加本次比赛的心情,做出了前两道结果题,第三道结果题和第四道结果题都不是完全确定的,也做出了第1、2、3道编程题,但是第三道可能会超时,但是能过一个测试点算一个测试点,至于后两道以我现在的菜鸡实力还够不到,所以就被我放弃了,考场是真的冷,再加上自己的水平,呜呜呜……明年二战吧。
最后这次比赛打了个省三的成绩,还是感到了自己和真正大佬的差距,觉得自己还有很多的东西需要去学习,谨以此记录本次比赛的心情心得和收获,望诸君共勉之,希望来年的自己变得更强!

问题描述

小明对数位中含有 2、 0、 1、 9 的数字很感兴趣,在 1 到 40 中这样的数包括 1、 2、 9、 10 至 32、 39 和 40,共 28 个,他们的和是 574,平方和是 14362。
注意,平方和是指将每个数分别平方后求和。
请问,在 1 到 2019 中,所有这样的数的平方和是多少?

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
提示:如果你编写程序计算,发现结果是负的,请仔细检查自己的程序,不要怀疑考场的编程软件。

思路:

这是一个四位数的枚举暴力题,毕竟**杯嘛,我的思路就是将他们的个位、十位、百位、千位提出来,判断他们是不是2、0、1、9四个数字的其中一个,是的话就将这个数的平方和加上来,最后输出。

答案:

2658417853

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a,b,c,d;
	unsigned long long sum=0;
	for(int i=1;i<=2019;i++){
		a=b=c=d=3;//初始化 
		a=i%10;//个位
		if(i>10)
			b=i/10%10;//十位
		if(i>100)
			c=i/100%10;//百位 
		if(i>1000)
			d=i/1000;//千位 
		if(a==2||a==0||a==1||a==9||
		   b==2||b==0||b==1||b==9||
		   c==2||c==0||c==1||c==9||
		   d==2||d==0||d==1||d==9){
				sum+=i*i;
		   }
	}
	cout<<sum<<endl;
}