本题因为数位长度不同,数据范围较小,数据点及其明显,因此可以通过规律直接筛选:
1、10以内的数字全符合条件
2、10~99之间的数字全都是11的倍数
3、100~999之间的数字全都是111的倍数
4、1000以上只有1111符合条件
#include <iostream>
using namespace std;
int main(){
// 1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77,88,99,111,222,333,444,555,666,777,888,999,1111
int n;
cin>>n;
int cnt=0;
for(int i=1;i<=n;i++){
if(i<10) cnt++;
else if(i%11==0&&i<100) cnt++;
else if(i%111==0&&i<1000) cnt++;
else if(i==1111) cnt++;
}
cout<<cnt;
return 0;
}