常用小技巧:关于取出x的每位数字 和 将字符数字转为数字
1.取出x的每位数字
int t = x % 10;
x /= 10;
2.将字符数字转为数字
int x = 0;
for (int i = 0; i < str.size(); i ++ )
x = x * 10 + str[i] - '0';
下面是代码:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
int res = 0;
for (int i = 1; i <= n; i ++ )
{
int x = i;
while(x)
{
int t = x % 10; // 取出x的个位数
x /= 10; // 取它的上一位
if (t == 0 || t == 2 || t == 1 || t == 9)
{
res += i;
break;
}
}
}
cout << res << endl;
return 0;
}
新手一枚~如有错误欢迎指出并教导~谢谢您
这个题才是我们的暴力杯该有的呀!
现在叫DP杯嗷 [狗头]
hh
hh
竟然如此暴力,我看题目还想用数位DP来着
暴力都o(n)复杂度
谢谢你总结的小技巧
发现大佬的题解都挺不错,点了关注
有break,比如11,你就会循环两次
这是没有break的数据
1 2 9 10 10 11 11 12 12 13 14 15 16 17 18 19 19 20 20 21 21 22 22 23 24 25 26 27 28 29 29 30 31 32 39 40
谢谢
break;为什么要加上这个啊
识别到0 1 2 9就直接加进去了,跳出本次循环,不需要继续往下了吧
请问为什么要加break呀?不是很理解