蓝桥杯2019 C/C++A组
平方和
【问题描述】
小明对数位中含有2、0、1、9 的数字很感兴趣,在1 到40 中这样的数包括1、2、9、10 至32、39 和40,共28个,他们的和是574,平方和是14362。 注意,平方和是指将每个数分别平方后求和。 请问,在1 到2019中,所有这样的数的平方和是多少?
【问题分析】
枚举、筛选。遍历每一个数对其进行筛选。
#include <iostream>
using namespace std;
int main()
{
int i,k,m;
long long sum=0; //防止溢出
for (i = 1; i <= 2019; i++)
{
k = i;
while (k)
{
m = k % 10;
if (m == 2 || m == 0 || m == 1 || m == 9)
{
sum += i * i;//之所以用i不用k 因为如果最后一位不是2,0,1,9 k的值会变
k = 0;//把k重置为0 避免类似于对22这种出现两次2的进行重复运算
}
k = k / 10;
}
}
cout << sum << endl;
return 0;
}
结果: