[GESP2509二级] 优美的数字

本题因为数位长度不同,数据范围较小,数据点及其明显,因此可以通过规律直接筛选:

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;
}