- 问题描述
- 解题方法
str.find(‘2’) != string::npos
- 代码展示
#include <cstdio>
#include <string>
#include <sstream>
using namespace std;
int a[2020];
//数字原模原样的转换为字符串
void i2s(int i,string &s){
stringstream stream;
stream << i;
stream >> s;
}
int main(){
int n;
scanf("%d", &n);
string str;
int len = 0;
for (int i = 1; i <= n; ++i) {
i2s(i,str);
if(str.find('2') != string::npos || str.find('0') != string::npos
|| str.find('1') != string::npos || str.find('9') != string::npos)
a[len++] = i;
}
long long ans = 0;
for (int j = 0; j < len; ++j) {
ans += a[j];
}
printf("%lld", ans);
return 0;
}
- 注意事项
1.数字原模原样的转换为字符串
void i2s(int i,string &s){
stringstream stream;
stream << i;
stream >> s;
}
2.上面代码第一行中的&是引用的意思
3.str.find(‘2’) != string::npos的意思:
在字符串str中寻找‘2’在字符串里返回1,不在返回0
其中string::npos是字符串不在str中的返回值
4.头文件解析
#include 输入输出头文件
#include 字符串头文件
#include 使用注意事项第一条时的头文件