题解:P11437 [Code+#6] 趣味数

· · 题解

拿下除搬题人第一个通过。

做题思路

我不想写数位拆分,将数字转成字符串,然后 n^2 检查即可。

其中 n 是字符串长度。

code:

#include<bits/stdc++.h>
using namespace std;
bool check(int x){
    string s=to_string(x);
    for(int i=s.size()-2;i>=0;i--)for(int j=i;j<s.size();j++)if(s[j]<s[i])return 0;
    return 1;
}
int ans;
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int n;
    cin>>n;
    for(int i=10;i<=n;i++)if(check(i))cout<<i<<"\n",ans=1;
    if(!ans)cout<<"-1\n";
    return 0;
}

每个数字最多五位,可以通过。