全部评论 3

  • 为啥都用数位dp啊,我这种虽然慢但也能过

    #include <bits/stdc++.h>
    using namespace std;
    bool ok(int n){
        string m = to_string(n);
        string k = m;
        sort(k.begin(),k.end());
        return m == k;
    }
    int main(){
        int a;
        cin >> a;
        int sumn = 0;
        for (int i = 1;i <= a;i++){
            sumn+=ok(i);
        }
        cout << sumn;
        return 0;
    }
    

    1周前 来自 黑龙江

    1
    • 人家的虽然难写,但比你运行快啊(这题数据量扩到10的12次方就老实了)

      1周前 来自 上海

      0
    • 关键这是欢乐赛啊,考试时真这么写,一辈子别想冲总榜了,即使AK,题目浪费的时间也非常多,我现在很感觉他这个不像自己写的,真的有人会这么写代码吗

      1周前 来自 黑龙江

      0
    • 人家是想练习数位DP,有没想打比赛(dalao打欢乐赛基本浪费时间)

      1周前 来自 上海

      0
  • #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int a;
        cin>>a;
        int sum=0;
        for(int i = 1;i<=a;i++)
            {
                //数位分离,判断低位是否大于高位
                int b=i%10;//个
                int c=i/10%10;//十
                int d=i/100%10;//百
                int e=i/1000%10;//千
                int f=i/10000%10;//万
                int g=i/100000%10;//十万
                int h=i/1000000%10;//百万;
                if(a>=b&&b>=c&&c>=d&&d>=e&&e>=f&&f>=g&&g>=h)
                {
                    sum++;
                }
            }
        cout<<sum;
        return 0;
    }
    

    暴力...

    1周前 来自 浙江

    0
  • 自己的写法

    #include<iostream>
    using namespace std;
    bool bujiang(int n){
        int i=0,a[7]={};//n最大为10^6,共7位,所以数组大小为7
        if(n>=1&&n<=9)return true;//1到9的数字只有1位,一定是不降数
        while(n!=0){
            a[i]=n%10;
            n/=10;
            i++;
        }
        for(int j=1;j<7;j++){
            if(a[j]>a[j-1])return false;
        }
        return true;
    }
    int main(){
        int n,ans=0;
        cin>>n;
        for(int i=1;i<=n;i++){
            if(bujiang(i))ans++;
        }
        cout<<ans;
        return 0;
    }
    

    cjdst的看不懂

    1周前 来自 河北

    0
暂无数据

提交答案之后,这里将显示提交结果~

首页