AcWing 1245. 特别数的和
文章目录
- 前言
- 代码
- 思路
前言
简单题。不过好像也有点不会写。哭死。
AcWing 1245. 特别数的和
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int ans=0;
for(int i=1;i<=n;i++){
int x=i;
while(x){
int t=x%10;
x/=10;
if(t==2||t==0||t==1||t==9){
ans+=i;
break;
}
}
}
cout<<ans<<endl;
return 0;
}
思路
首先就算是所有数字都满足条件都不会超过 int 的表示范围,因为只有一个亿,int 能表示的范围是 20 亿。这个题感觉就是模拟。感觉码力不够,不会模拟。我现在知道了,其实码力不够就是背的不够多,或者说敲的不够多。要是记住了这种题,下一次遇到的时候肯定比小白要反应迅速一些的,毕竟写算法题又不是让研究算法或者发明算法,基本就是熟练套公式就差不多了。比如说要把个位取出来常用的就是 %10 之后 /10 ,把字符串的数字 2019 转换成数字的 2019 ,先把字符转换成数字,然后遍历每一个元素,每次乘以 10 ,加下一个元素,就可以了。
好像确实没什么难的,因为数据范围比较小,把每一位取出来判断就可以了。关键就是看自己前面的那个取出个位数用的孰不熟练。