蓝桥杯100题总结
1. 平方和
题目描述
小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包
括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574,平方和是 14362。
注意,平方和是指将每个数分别平方后求和。
请问,在 1 到 2019 中,所有这样的数的平方和是多少?
结题思路
思路1:
- 依次遍历1-2019;
- 整型转字符串;
- 字符串中是否包含某字符。
源代码
#include <iostream>
#include <cstring>
#include <cmath>
#include <stdlib.h>
using namespace std;
int main()
{
long long sum = 0;
long long res = 0;
for(int i = 1; i <= 40; i++)
{
string str;
str = to_string(i);
if(str.find('2', 0) == -1 && str.find('0', 0) == -1 && str.find('1', 0) == -1 && str.find('9', 0) == -1)
{
continue;
}
else
{
sum += pow(i, 2);
}
}
cout << sum << endl;
return 0;
}
题型分析
- 字符串-整型转换题。
- 整型与字符串转换方法:
整型转字符串:
用于整型转字符数组a
1.itoa(value, a, radix)
整型转string类型
2.string to_string(int a)
字符串转整型(字符数组和string类型都可以):
1.int atoi(str)
下次再此类题中要注意的地方
- 牢记整型与字符串转换方法。
此类题模板代码
str = to_string(i);
if(str.find('2', 0) == -1 && str.find('0', 0) == -1 && str.find('1', 0) == -1 && str.find('9', 0) == -1)
{
continue;
}